1 분 소요



https://www.acmicpc.net/problem/1076



🔍 문제 풀이

풀이 과정

처음에는 1부터 1_000_000_000까지 값을 담은 배열을 만들어 직접 꺼내 쓰는 방식으로 구현했지만,
마지막 색상은 10의 거듭제곱만 곱해주면 된다는 걸 깨닫고 간단하게 풀 수 있었다.

for(int i=0; i<idx; i++){
    num = 10 * num;
}


또한 HashMap을 이용하면 색상을 바로 숫자로 매핑할 수 있어, 배열 인덱스를 일일이 찾지 않아도 되고 코드도 깔끔해진다.

long ans = Long.parseLong(map.get(color1) + map.get(color2));
ans *= Math.pow(10.0, Integer.parseInt(map.get(color3)));



💻 코드

전체 코드

내 풀이

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] color = {"black" ,"brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"};

        long ans = 0;
        String input = br.readLine();

        for(int j=0; j<10; j++){
            if(input.equals(color[j])) ans += j * 10;
        }
        String input2 = br.readLine();

        for(int j=0; j<10; j++){
            if(input2.equals(color[j])) ans += j;
        }

        String input3 = br.readLine();
        int idx = 0, num=1;
        for(int i = 0; i <10; i++){
            if(input3.equals(color[i])) idx = i;
        }

        for(int i=0; i<idx; i++){
            num = 10 * num;
        }
        System.out.println(ans * num);

    }
}


다른 풀이 (set 사용)

import java.io.*;
import java.util.HashMap;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        HashMap<String,String> map = new HashMap<>();

        map.put("black","0");
        map.put("brown", "1");
        map.put("red", "2");
        map.put("orange", "3");
        map.put("yellow", "4");
        map.put("green", "5");
        map.put("blue", "6");
        map.put("violet", "7");
        map.put("grey", "8");
        map.put("white", "9");

        String color1 = br.readLine();
        String color2 = br.readLine();
        String color3 = br.readLine();

        long ans = Long.parseLong(map.get(color1) + map.get(color2));
        ans *= Math.pow(10.0, Integer.parseInt(map.get(color3)));

        System.out.println(ans);
    }
}


카테고리:

업데이트:

댓글남기기