728x90
반응형
https://www.acmicpc.net/problem/1620
첫 줄에 도감에 수록될 포켓몬의 개수와 문제의 개수를 입력받는다.
포켓몬은 1번부터 N번까지의 포켓몬을 입력받게 되며 질문 받을 때,
번호로 물어본다면 이름으로, 이름으로 물어본다면 번호로 대답한다.
포켓몬은 이름과 번호가 연결되있다는 점에서 Map을 사용해주었다.
또한, 나중에 질문을 받을 때 포켓몬의 이름도 입력받게 되므로 번호도 String형으로 받아주었다.
그렇게 코드를 만들고 보니 Key로 value를 찾는 건 쉬우나, 그 역을 할 수 없다는 것을 깨달았다.
그래서 다른 건 똑같고 Key와 Value값만 뒤집은 Map을 하나 더 만들어주었다.
그렇게 해서 질문에 대한 답을 처리하도록 하여 문제를 풀 수 있었다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
HashMap<String, String> hm1 = new HashMap<>();
HashMap<String, String> hm2 = new HashMap<>();
StringBuilder sb = new StringBuilder();
String ip;
for (int i = 1; i <= N; i++) {
ip = br.readLine();
hm1.put(String.valueOf(i), ip);
hm2.put(ip, String.valueOf(i));
}
for (int i = 0; i < M; i++) {
ip = br.readLine();
if (hm1.containsKey(ip)) sb.append(hm1.get(ip) + "\n");
else if(hm2.containsKey(ip)) sb.append(hm2.get(ip) + "\n");
}
br.close();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(String.valueOf(sb));
bw.flush();
bw.close();
}
}
반응형
'JAVA > 백준' 카테고리의 다른 글
백준 11047번: 동전 0 (0) | 2024.05.03 |
---|---|
백준 1764번: 듣보잡 (0) | 2024.05.02 |
백준 11723번: 집합 (0) | 2024.04.30 |
백준 18111번: 마인크래프트 (0) | 2024.04.29 |
백준 1874번: 스택 수열 (0) | 2024.04.21 |