반응형
문제
풀이
해쉬맵을 이용해 문제를 해결했다.
인덱스를 키 값으로, 입력 받는 포켓몬 이름을 데이터 값으로 가지는 해시맵을 만든다.
다음과 같은 해시맵을 하나 만든다. (1 : Pikachu)
이어서 인덱스를 포켓몬 이름으로, 데이터 값을 인덱스 값을 가지는 해시맵을 만든다.
다음과 같은 해시맵을 또 만든다. (Pickachu : 1)
두 개의 해시맵을 이용해 간단히 풀 수 잇다.
해시를 사용하므로 시간복잡도는 O(1) 이다.
코드
java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
private static int n, m;
private static String[] problems;
private static Map<String, String> poketmons, keys;
public static void main(String[] args) throws IOException {
input();
solve();
}
private static void solve() {
StringBuilder sb = new StringBuilder();
for (String problem : problems) {
if (isNumber(problem)) {
sb.append(poketmons.get(problem)).append('\n');
} else {
sb.append(keys.get(problem)).append('\n');
}
}
System.out.println(sb.toString());
}
private static boolean isNumber(String s) {
if (s.charAt(0) >= '0' && s.charAt(0) <= '9')
return true;
return false;
}
private static void input() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String[] lines = bufferedReader.readLine().split(" ");
n = Integer.parseInt(lines[0]);
m = Integer.parseInt(lines[1]);
poketmons = new HashMap<>();
keys = new HashMap<>();
for (int i = 1; i <= n; i++) {
String poketmon = bufferedReader.readLine();
poketmons.put(String.valueOf(i), poketmon);
keys.put(poketmon, String.valueOf(i));
}
problems = new String[m];
for (int i = 0; i < m; i++) {
problems[i] = bufferedReader.readLine();
}
}
}
반응형
'BOJ' 카테고리의 다른 글
백준 17472 - 다리 만들기 2 (1) | 2023.03.06 |
---|---|
백준 6416 - 트리인가? (0) | 2022.11.28 |
백준 2559 - 수열 (0) | 2022.03.20 |
백준 2003 - 수들의 합 2 (0) | 2022.03.17 |
백준 2110 - 공유기 설치 (0) | 2022.03.11 |