최대 1 분 소요

[백준 1076번] 저항

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
 
public class 백준_손수경_정답_1076 {
    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        HashMap<String, Integer> hm = new HashMap<String, Integer>();
        //put() 메소드를 이용한 요소 저장
        hm.put("black"0);
        hm.put("brown"1);
        hm.put("red"2);
        hm.put("orange"3);
        hm.put("yellow"4);
        hm.put("green"5);
        hm.put("blue"6);
        hm.put("violet"7);
        hm.put("grey"8);
        hm.put("white"9);
        
        String first = br.readLine();
        String second = br.readLine();
        String last = br.readLine();
        //get() 메소드를 이용한 요소 출력
        int value1 = hm.get(first);
        int value2 = hm.get(second);
        int value3 = hm.get(last);
        Long ans = Long.valueOf((value1 * 10 + value2)) * Long.valueOf((int)Math.pow(10, value3));
        //Long.parseInt vs Long.valueOf -> 전자: 괄호 안에 무조건 스트링형. 후자: 괄호 안에 상관없음
        bw.write(ans + "\n");
        bw.close();
        
    }
}
 
cs


풀이 방법

색깔과 숫자를 대응시켜서 먼저 저장시켜놓은 후, 입력된 색깔에 대응되는 색깔의 숫자를 get() 메소드를 이용하여 뽑아낸다. 그런 다음 규칙에 맞게, 값을 더한다. 여기서 int형으로 하면 white, white, white일 때 에러가 나므로 Long형으로 바꾸어 주었다.

배운 점

  • HashMap<type, type> hm : hm에 들어갈 두 값의 데이터형을 넣어준다. 그 후 put() 메서드를 이용하여서 요소를 추가한다. 첫 번째에 들어가는 값을 key라고 하고 두 번째에 들어가는 값을 요소라고 한다 여기서 key값만 구하기 위해서는 keySet() 메서드를 이용한다. keySet() 메서드에는 키 값들이 배열 형태로 출력된다. 그리고 요소를 출력하고 싶다면 get(key) 메서드를 이용해서 구한다.

  • Long.parseLong vs Long.valueOf Long.parseLong은 new Long() 형으로 객체를 반환하고, Long.parseLong은 long 기본 자료형으로 반환한다. 그럼에서 서로 계산이 되는 이유는 오토 언박싱 때문이다.

댓글남기기