Algorithm/Baekjoon Online Judge

[Java] BOJ1620_나는야 포켓몬 마스터 이다솜

'지훈' 2021. 4. 23. 16:45

www.acmicpc.net/problem/1620

 

1620번: 나는야 포켓몬 마스터 이다솜

첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면

www.acmicpc.net


포켓몬 이름과 도감 번호를 Key, Value로 갖기 위해 HashMap을 이용했다. 탐색을 빨리하기 위함도 있다.

하지만 key값으로 값을 찾는 것은 빠르지만 value를 이용해 값을 찾는 것은 오래 걸리기 때문에 도감 번호를 key로, 포켓몬 이름을 value로 하는 HashMap을 하나 더 만들었다.

 

그렇게 하여 key값으로만 탐색을 하도록 구현하였다.

 

 

import java.io.*;
import java.util.HashMap;
import java.util.StringTokenizer;

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, Integer> dogam = new HashMap<>();
		HashMap<Integer, String> dogam2 = new HashMap<>();
		
		for (int i = 1; i <= N; i++) {
			String temp = br.readLine();
			dogam.put(temp, i);
			dogam2.put(i, temp);
		}
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < M; i++) {
			String temp = br.readLine();
			if (Character.isDigit(temp.charAt(0))) {
				int val = Integer.parseInt(temp);
				sb.append(dogam2.get(val)).append("\n");
			} else {
				sb.append(dogam.get(temp)).append("\n");
			}
		}
		System.out.println(sb.toString());
	}

}