코린이의 소소한 공부노트

[백준 온라인 저지] 1620. 나는야 포켓몬 마스터 이다솜 본문

코딩테스트 풀이/JAVA

[백준 온라인 저지] 1620. 나는야 포켓몬 마스터 이다솜

무지맘 2023. 4. 18. 00:27

1. 입력

- 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어진다.

- NM1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다.

- 둘째 줄부터 N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지 한 줄에 하나씩 입력으로 들어온다.

- 포켓몬의 이름은 모두 영어로만 이루어져있고, 첫 글자만 대문자이고, 나머지 문자는 소문자로만 이루어져 있다. 일부 포켓몬은 마지막 문자만 대문자일 수도 있다.

- 포켓몬 이름의 최대 길이는 20, 최소 길이는 2

- 그 다음 줄부터 총 M개의 줄에 내가 맞춰야하는 문제가 입력으로 들어온다.

- 문제가 알파벳으로만 들어오면 포켓몬 번호를 말해야 하고, 숫자로만 들어오면 포켓몬 번호에 해당하는 문자를 출력한다.

- 입력으로 들어오는 숫자는 반드시 1보다 크거나 같고, N보다 작거나 같고, 입력으로 들어오는 문자는 반드시 도감에 있는 포켓몬의 이름만 주어진다.

 

2. 출력

- 첫째 줄부터 차례대로 M개의 줄에 각각의 문제에 대한 답을 출력한다.

- 입력으로 숫자가 들어왔다면 그 숫자에 해당하는 포켓몬의 이름을, 문자가 들어왔으면 그 포켓몬의 이름에 해당하는 번호를 출력한다.

 

3. 코드

import java.util.*;
import java.io.*;
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));
        String[] input = br.readLine().split(" ");
        int n = Integer.valueOf(input[0]), m = Integer.valueOf(input[1]);
        HashMap<String, Integer> keys = new HashMap<>();
        HashMap<Integer, String> keyi = new HashMap<>();
        for(int i=1 ; i<=n ; i++){
            String s = br.readLine();
            keys.put(s, i); keyi.put(i, s);
        }
        for(int i=0 ; i<m ; i++){
            String s = br.readLine();
            if(keys.containsKey(s)) bw.write(keys.get(s)+"\n");
            else bw.write(keyi.get(Integer.valueOf(s))+"\n");
        }
        bw.flush();
        bw.close();
    }
}