[BOJ] 1620번 나는야 포켓몬 마스터 이다솜 - JAVA

최영환·2024년 7월 10일
0
post-thumbnail

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws Exception {
        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<Integer, String> numberMap = new HashMap<>();
        HashMap<String, Integer> nameMap = new HashMap<>();

        for (int i = 1; i <= N; i++) {
            String s = br.readLine();
            numberMap.put(i, s);
            nameMap.put(s, i);
        }

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < M; i++) {
            String key = br.readLine();

            if (Character.isDigit(key.charAt(0))) {
                sb.append(numberMap.get(Integer.parseInt(key))).append("\n");
            } else {
                sb.append(nameMap.get(key)).append("\n");
            }
        }

        System.out.println(sb);
    }
}

📄 해설

접근

  • 우선 문제가 너무 길고 불필요해서 가장 필요한 부분만 캡쳐해서 가져왔다..
  • 번호가 들어오면 해당 포켓몬의 이름을 출력하고, 이름이 들어오면 해당 포켓몬의 번호를 출력해야하기 때문에 두 개의 HashMap 을 사용하는 것으로 접근했다.

과정

  • 로직은 간단하다. 단순 구현 문제이므로, 입력을 받은 후, 출력을 요구하는 M개의 입력에 대하여 해당 입력이 숫자인 경우와 문자열인 경우의 처리를 분기한다.
  • 두 개의 HashMap 을 사용한다. 포켓몬의 번호와 이름을 입력 받으면서 각각 <번호, 이름> 쌍과 <이름, 번호> 쌍으로 저장한다.
  • 문자열인 경우 <번호, 이름> 쌍을 저장한 맵에 접근하고, 숫자인 경우 <이름, 번호> 쌍을 저장한 맵에 접근한다.
profile
조금 느릴게요~

0개의 댓글