본문 바로가기
백준

[백준] 1076번 : 저항 – JAVA [자바]

by Hongwoo 2022. 8. 8.
반응형

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

 

1076번: 저항

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

www.acmicpc.net

 

 


  • 문제

 

 


  • 문제 풀이

백준 1076번 저항은 브론즈 2 난이도의 구현 문제이다. 이 문제에서는 입력으로 3개의 색깔이 주어진다. 그리고 첫 두 색깔을 합친 수와 마지막 색깔의 수를 곱하면 된다.

 

이 문제는 HashMap을 이용해서 풀겠다. 왜냐하면 HashMap을 이용하면 색깔로 표에 있는 값을 구할 수 있기 때문이다. 따라서 HashMap을 선언하는데 Key는 String, Value는 Integer로 하겠다. 표에 나와있는 곱을 따로 저장할 필요가 없는 이유는 바로 곱은 10을 값을 승으로 가지기 때문이다. 예를 들어서 red를 보면 값은 2이고 곱은 100이다. 이 이유는 10²이기 때문이다. 

 

즉, 이 문제는 우선 첫 두 색의 값을 합친다. 이건 첫 두 색의 문자열의 값을 합치면 된다. 그리고 int로 변환시켜준다. 그리고 그다음에 세 번째 색의 곱을 이 변환한 수에 곱해주면 된다.

 

자세한 코드는 밑에 있다.

 


  • 코드

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        HashMap<String,String> map1 = new HashMap<>(){{
            put("black","0");
            put("brown", "1");
            put("red", "2");
            put("orange", "3");
            put("yellow", "4");
            put("green", "5");
            put("blue", "6");
            put("violet", "7");
            put("grey", "8");
            put("white", "9");
        }};  // 색과 값을 저장하는 HashMap
        String color1 = br.readLine();
        String color2 = br.readLine();
        String color3 = br.readLine();
        long ans = Long.parseLong(map1.get(color1) + map1.get(color2));
        ans *= Math.pow(10.0, (double) Integer.parseInt(map1.get(color3)));
        System.out.print(ans);
    }
}

 

 

반응형

댓글