본문 바로가기

Algorithm/Baekjoon Oline Judge - Java

[백준] 1620_나는야 포켓몬 마스터 이다솜

 

Sliver

 

 

입력

  • 첫 번째 줄에 도감에 수록된 포켓몬의 수 N(1 ≤ N ≤ 100,000)과 맞춰야 하는 문제의 개수 M(1 ≤ M ≤ 100,000)이 주어집니다.
  • 두 번째 줄부터 N개의 줄에는 각 포켓몬의 이름이 번호 순서대로 주어집니다.
  • 그 다음 M개의 줄에는 포켓몬의 이름 또는 번호가 주어집니다.

출력

  • 입력된 이름에 해당하는 포켓몬의 번호 또는 입력된 번호에 해당하는 포켓몬의 이름을 출력합니다.

 


 

풀이

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);   
        StringBuilder sb = new StringBuilder();
        Map<String, Integer> nameToNumberMap = new HashMap<>();
        int N1 = sc.nextInt();
        int N2 = sc.nextInt();
        String[] numberToNameArr = new String[N1];
        sc.nextLine();
        for(int i=1; i<=N1; i++){
            String name = sc.nextLine();
            nameToNumberMap.put(name, i);
            numberToNameArr[i-1] = name;
        }       
        for(int i=0; i<N2; i++){
            String str = sc.nextLine();
            if(Character.isDigit(str.charAt(0)))
               sb.append(numberToNameArr[Integer.parseInt(str)-1]);
            else
               sb.append(nameToNumberMap.get(str)); 
            sb.append("\n");
        }

        System.out.println(sb);    
        sc.close();        
    }
}

 

자료구조가 Map인 nameToNumberMap으로는 (key : 포켓몬이름, value : 포켓몬 번호) 형태로 데이터를 저장하여 포켓몬 이름으로 포켓몬 번호 정보를 빠르게 가져올 수 있도록 하였고, 

문자열 배열인 numberToNameArr 에는 포켓몬의 이름을 저장하여, 포켓몬 번호로 포켓몬의 이름을 빠르게 가져올 수 있도록 하였다. 

 


https://www.acmicpc.net/problem/1620