본문 바로가기

알고리즘/🥉 브론즈

백준 1076 저항 자바 풀이

728x90

난이도 : 브론즈2

풀이일 : 12144

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

 

1076번: 저항

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

www.acmicpc.net


링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐


풀이코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String[] colors = {"black", "brown", "red", "orange",
				"yellow", "green", "blue", "violet", "grey", "white"};
		
		long result = 0;
		
		String X = br.readLine();
		String Y = br.readLine();
		String Z = br.readLine();
		
		result += Arrays.asList(colors).indexOf(X) * 10;
		result += Arrays.asList(colors).indexOf(Y);
		result *= Math.pow(10, Arrays.asList(colors).indexOf(Z));
		
		System.out.println(result);
	}
}
  • 배운 것
    • Arrays.asList(array) : 배열에서 List 인터페이스의 메소드를 사용하기 위한 방법. 반환된 리스트에 indexOf 메소드를 사용
    • Math.pow(a, b) : a의 b제곱을 반환하는 함수
  • 풀이
    • 각 색깔들이 0부터 9를 의미하기 때문에 배열로 구성. 각 인덱스가 색깔의 값이 되도록 함
    • 각 색깔들의 곱 값은 10의 0부터 9제곱이기 때문에 Math.pow를 통해 곱 계산
    • 첫 번째 색깔은 두 번째 색깔보다 한 자리 수 더 큰 값이기 때문에 *10 값으로 result에 덧셈
    • 두 번째 색깔은 그대로 result에 덧셈
    • 세 번째 색깔은 곱이기 때문에 Math.pow 두 번째 인자로 세 번째 색깔의 인덱스 사용

느낀점

  • 자바는 되게 쉬운 문제들도 뭔가 막혀서 찾아보고 공부해야 해결된다. 이러다가 파이썬은 감 못올릴 것 같은데 내일은 일찍부터 알고리즘 문제 정하고 푸는 시간을 가져야지.