1620 나는야 포켓몬 마스터 이다솜 문제 링크
문제

#1
import java.awt.*;
import java.io.*;
import java.util.*;
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 = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
HashMap<String, String> dictionary = new HashMap<>();
String monster;
for(int i=1; i<=N; i++) {
monster = br.readLine();
dictionary.put(String.valueOf(i), monster);
}
String result;
for(int j=0; j<M; j++) {
monster = br.readLine();
result = dictionary.get(monster);
if(result==null) {
for(int i=1; i<=N; i++) {
if(dictionary.get(String.valueOf(i)).equals(monster)) {
result = String.valueOf(i);
break;
}
}
}
bw.write(result+"\n");
}
bw.flush();
bw.close();
}
}

- 해시 맵으로 하는 게 맞을 것 같은데..
- 아마 value로 key를 찾는 과정이 문제일 것 같은데..
#2
import java.awt.*;
import java.io.*;
import java.util.*;
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 = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
HashMap<String, String> dictionaryK = new HashMap<>();
HashMap<String, String> dictionaryV = new HashMap<>();
String monster;
for(int i=1; i<=N; i++) {
monster = br.readLine();
dictionaryK.put(String.valueOf(i), monster);
dictionaryK.put(monster, String.valueOf(i));
}
String result;
for(int j=0; j<M; j++) {
monster = br.readLine();
result = dictionaryK.get(monster);
if(result==null) {
result = dictionaryV.get(monster);
}
bw.write(result+"\n");
}
bw.flush();
bw.close();
}
}

- 당연히 메모리 초과 날 줄 알았는데..
- 이게 되네..