[Algorithm/Java] 백준 1076번 - 저항
https://www.acmicpc.net/problem/1076
🔍 문제 풀이
풀이 과정
처음에는 1부터 1_000_000_000까지 값을 담은 배열을 만들어 직접 꺼내 쓰는 방식으로 구현했지만,
마지막 색상은 10의 거듭제곱만 곱해주면 된다는 걸 깨닫고 간단하게 풀 수 있었다.
for(int i=0; i<idx; i++){
num = 10 * num;
}
또한 HashMap을 이용하면 색상을 바로 숫자로 매핑할 수 있어, 배열 인덱스를 일일이 찾지 않아도 되고 코드도 깔끔해진다.
long ans = Long.parseLong(map.get(color1) + map.get(color2));
ans *= Math.pow(10.0, Integer.parseInt(map.get(color3)));
💻 코드
전체 코드
내 풀이
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] color = {"black" ,"brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"};
long ans = 0;
String input = br.readLine();
for(int j=0; j<10; j++){
if(input.equals(color[j])) ans += j * 10;
}
String input2 = br.readLine();
for(int j=0; j<10; j++){
if(input2.equals(color[j])) ans += j;
}
String input3 = br.readLine();
int idx = 0, num=1;
for(int i = 0; i <10; i++){
if(input3.equals(color[i])) idx = i;
}
for(int i=0; i<idx; i++){
num = 10 * num;
}
System.out.println(ans * num);
}
}
다른 풀이 (set 사용)
import java.io.*;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashMap<String,String> map = new HashMap<>();
map.put("black","0");
map.put("brown", "1");
map.put("red", "2");
map.put("orange", "3");
map.put("yellow", "4");
map.put("green", "5");
map.put("blue", "6");
map.put("violet", "7");
map.put("grey", "8");
map.put("white", "9");
String color1 = br.readLine();
String color2 = br.readLine();
String color3 = br.readLine();
long ans = Long.parseLong(map.get(color1) + map.get(color2));
ans *= Math.pow(10.0, Integer.parseInt(map.get(color3)));
System.out.println(ans);
}
}
댓글남기기