Algorithm PS/Baekjoon Online Judge
[BOJ/백준] 1620 나는야 포켓몬 마스터 이다솜 (S4)
kyung.Kh
2024. 7. 15. 18:15
문제
https://www.acmicpc.net/problem/1620
풀이
오박사 : 그럼 다솜아 이제 진정한 포켓몬 마스터가 되기 위해 도감을 완성시키도록 하여라. 일단 네가 현재 가지고 있는 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 보면 포켓몬의 이름을 말하는 연습을 하도록 하여라. 나의 시험을 통과하면, 내가 새로 만든 도감을 주도록 하겠네.
N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지 한 줄에 하나씩 입력을 받고, 입력받은 후에는 M개의 줄에 내가 맞춰야하는 문제가 입력으로 들어온다. 문제가 알파벳으로만 들어오면 포켓몬 번호를 말해야 하고, 숫자로만 들어오면 포켓몬 번호에 해당하는 문자를 출력해야 한다.
즉, HashMap 형태롤 저장을 해야하는데, 성능을 위해서 <포켓몬 이름, 번호>로 저장하는 HashMap과 <번호, 포켓몬 이름>으로 저장하는 HashMap 총 2개를 만들어서 진행한다.
문제를 입력받을 때는 hashNum과 hashName에 모두 값을 넣고, 입력받은 문제가 번호인지, 포켓몬인지는 번호를 기준으로 아스키코드 값을 기준으로 판별한다.
Code
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
HashMap<Integer, String> hashNum = new HashMap<>(); // <번호, 포켓몬 이름>로 저장하는 HashMap
HashMap<String, Integer> hashName = new HashMap<>(); // <포켓몬 이름, 번호>로 저장하는 HashMap
for (int i = 1; i <= N; i++) { // HashMap에 포켓몬 입력
String name = br.readLine();
hashNum.put(i, name);
hashName.put(name, i);
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < M; i++) { // 문제 입력
String question = br.readLine();
// 입력받은 문제가 번호인지, 포켓몬인지 판별
if ( 49 <= question.charAt(0) && question.charAt(0) <= 57) { // 번호이면?
sb.append(hashNum.get(Integer.parseInt(question))).append("\n");
} else {
sb.append(hashName.get(question)).append("\n");
}
}
bw.write(sb + "");
bw.flush();
bw.close();
}
}
728x90