본문 바로가기

PS/Problems

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

포켓몬의 개수 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();
	}
}

 

'PS > Problems' 카테고리의 다른 글

[Java] 백준 9095번 - Dynamic Programming  (0) 2021.12.28
[Java] (시간 17등) 백준 7576번  (0) 2021.12.27
[Java] 백준 2630번 - DFS  (0) 2021.12.26
[Java] 백준 2606번 - BFS  (0) 2021.12.26
[Java] 백준 1931번 - 그리디 알고리즘  (0) 2021.12.26