백준 1076번 저항

 Description

전자 제품에는 저항이 들어간다. 저항은 색 3개를 이용해서 그 저항이 몇 옴인지 나타낸다.
처음 색 2 개는 저항의 값이고, 마지막 색은 곱해야 하는 값이다.
저항의 값은 다음 표를 이용해서 구한다.

색	    값 곱
black	  0	 1
brown	  1	 10
red	    2	 100
orange	3	 1000
yellow	4	 10000
green 	5	 100000
blue 	  6  1000000
violet	7	 10000000
grey	  8	 100000000
white	  9	 1000000000

예를 들어, 저항에 색이 yellow, violet, red였다면 저항의 값은 4,700 이 된다.

 Input

첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 색은 모두 위의 표에 쓰여 있는 색만 주어진다.

 Output

입력으로 주어진 저항의 저항값을 계산하여 첫째 줄에 출력한다.

 Solution

  • 백준 11652번 카드(Card) 문제에서도 long을 사용하는 것이 포인트였는데, 이 문제도 int 자료형을 사용하면 풀리지 않는다.
// 내 풀이

import java.util.HashMap;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        HashMap<String, Long> table = new HashMap<>();
        table.put("black", 0L);
        table.put("brown", 1L);
        table.put("red", 2L);
        table.put("orange", 3L);
        table.put("yellow", 4L);
        table.put("green", 5L);
        table.put("blue", 6L);
        table.put("violet", 7L);
        table.put("grey", 8L);
        table.put("white", 9L);

        long answer = (long) ((table.get(sc.nextLine())*10
                        + table.get(sc.nextLine()))*Math.pow(10, table.get(sc.nextLine())));
        System.out.println(answer);
    }
}

 Feedback

# 다른 사람 풀이

A,B,C=[["black","brown","red","orange","yellow","green","blue","violet","grey","white"].index(input())for s in range(3)];print((10*A+B)*10**C)

Source