PS/Problems

[Java] (시간 1등) 백준 1620번 - HashMap

CalicoCat22 2021. 12. 25. 22:33

포켓몬의 개수 N과 문제의 개수 M이 주어진다.

포켓몬은 1번부터 배정되고, 각 문제에 포켓몬의 이름이 입력되면 도감번호를

도감 번호가 입력되면 포켓몬의 이름을 출력한다.

import java.util.*;
import java.io.*;

public class s2_1620_hashmap{
	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, Integer> hm = new HashMap<>();
		String[] ary = new String[n + 1];
		
		for (int i = 0; i < n; i++) {
			String name = br.readLine();
			hm.put(name, i + 1);
			ary[i + 1] = name;
		}
		// ary는 index 자체가 도감 번호, 내부에는 포켓몬 이름 저장
        	// hm는 (포켓몬 이름 : 도감 번호) 관계의 HashMap

		for (int i = 0 ; i < m; i++) {
			String temp = br.readLine();
			if (temp.charAt(0) < 58) {
				bw.write(ary[Integer.parseInt(temp)]);
				bw.newLine();
			}
			else {
				bw.write(String.valueOf(hm.get(temp)));
				bw.newLine();
			}
		}
        	// 입력값 종류에 따라 Array와 HashMap 중 무엇을 참고할지 결정
		
		bw.flush();
		bw.close();
	}
}