[Algorithm] - 백준 1076 저항 - Java

예외 경우를 너무 생각없이 풀어서 한방에 맞지를 못했다.. 젠장

풀긴 풀었으나 좀 더 효율적인 코드를 짜야하는데 말이쥐..


package backjoon;

/*문제
전자 제품에는 저항이 들어간다. 저항은 색 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이 된다.

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

출력
첫째 줄에 입력을 주어진 저항의 저항값을 출력한다.*/

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class back1076 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String result = "";
for(int i=0; i<2; i++){
String tmp = br.readLine();
//처음부터 블랙나오면 앞에 0을 굳이 붙이지 않도록 함.
if(i==0 && tmp.equals("black")) continue;
else result+=getVal(tmp);
}
int zeroCnt = Integer.parseInt(getVal(br.readLine()));
for(int i=0; i<zeroCnt; i++){
result+="0";
}
//black black인 경우
if(result.charAt(0) == '0') System.out.println("0");
else System.out.println(result);
}
//분명 이것보다 좋은 메소드가 있을텐데 그냥 품.
static String getVal(String color){
String value = "";
switch(color){
case "black":
value = "0";
break;
case "brown":
value = "1";
break;
case "red":
value = "2";
break;
case "orange":
value = "3";
break;
case "yellow":
value = "4";
break;
case "green":
value = "5";
break;
case "blue":
value = "6";
break;
case "violet":
value = "7";
break;
case "grey":
value = "8";
break;
case "white":
value = "9";
break;
}
return value;
}
}

댓글