백준(Backjoon) 1076, 저항

2021. 7. 2. 11:06CodingTest

 

문제풀이

색의 저항값과 곱의 관계는 10의 제곱으로 표현이 가능하다.

색의 곱 = 10^색의 저항값

위의 문제를 해결하기 위하여 JAVA언어의 enum 열거형을 사용하였고 처음 두 색상의 저항값들을 문자열로 연결한 다음 정수형으로 변환하고 마지막 색상의 곱과 곱하여 값을 도출할 수 있었다. 여기서 주의할 점은 최종 결과값의 타입을 int 타입이 아닌 long 타입으로 설정하였다. 왜냐하면 white, white, white와 같은 저항이 입력된다면 int타입으로는 값을 표현할 수 없기 때문이다.

 

소스코드

public class Main {
	private enum electrical {black, brown, red, orange, yellow, green, blue, violet, grey, white};
	
	public static long solution(List<String> list)
	{
		String value = "";
		long answer = 0;
		for(int i=0;i<list.size();i++)
		{
			if(i>=list.size()-1)
			{
				// 저항의 마지막 색의 곱 = 10^색의값
				answer = (long) (Integer.parseInt(value)*Math.pow(10, electrical.valueOf(list.get(i)).ordinal())); 
			}
			else
			{
				value += electrical.valueOf(list.get(i)).ordinal();
			}	
		}
		return answer;
	}
	
	public static void main(String args[]) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		List<String> list = new ArrayList<>();
		for(int i=0;i<3;i++)
		{
			list.add(br.readLine());
		}
		System.out.println(solution(list));
		
	}
}

'CodingTest' 카테고리의 다른 글

백준(Backjoon) 1026, 보물  (0) 2021.07.06
백준(Backjoon) 11655, ROT13  (0) 2021.07.05
백준(Backjoon) 10798, 세로읽기  (0) 2021.06.30
백준(Backjoon) 10816, 숫자 카드 2  (0) 2021.06.28
백준(Backjoon) 2164, 카드2  (0) 2021.06.25