https://www.acmicpc.net/problem/1620
<문제 요약>
N과 M 입력
N번의 입력에선 N개의 포켓몬이 입력되고 (입력 순서대로 번호 지정)
그 후 M번의 입력에서는 번호나 포켓몬 이름이 입력되는데 해당되는 번호나 포켓몬 이름을 출력
<문제 풀이>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class P1620 {
static int N;
static int M;
static Map<String,Integer> nameMap=new HashMap<>();
static Map<Integer,String> indexMap=new HashMap<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
for (int i = 0; i < N; i++) {
String name = br.readLine();
nameMap.put(name,i+1);
indexMap.put(i+1,name);
}
StringBuilder sb = new StringBuilder();
while (M-- > 0) {
String input = br.readLine();
if(nameMap.containsKey(input)){
sb.append(nameMap.get(input)).append("\n");
}else{
sb.append(indexMap.get(Integer.parseInt(input))).append("\n");
}
}
System.out.println(sb);
}
}
문제가 너무 길어서 당황할 수 있는데 입력 부분의 글만 읽어도 된다.
HashMap을 사용했는데 어떻게 value에 접근할까 고민하다가 그냥 HashMap을 두개 만들면 된다는 것을 깨달았다 ..
그럼 간단히 풀린다!
HashMap은
정렬에 무관하게 빠른 접근을 원하면 강추