문제설명

 

 

소스코드

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

public class Main {
	public static void main(String[] args) throws IOException{
		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());
		StringBuilder sb = new StringBuilder();
		Map<String, Integer> m = new HashMap<>();
		String nameArr[] = new String[N + 1];
		for(int i = 1; i <= N; ++i)
		{
			String name = br.readLine();
			m.put(name,i);
			nameArr[i] = name;
		}
		for(int i = 0; i < M; ++i)
		{
			String input = br.readLine();
			try //일단 input을 int타입으로 변환 시도
			{
				int number = Integer.parseInt(input);
				//변환 성공시
				sb.append(nameArr[number]);
			}catch(Exception e){ //변환 실패시
				sb.append(m.get(input));
			}
			sb.append("\n");
		}
		System.out.println(sb.toString());
	}
}

 

설명

  1. 해시맵과 포켓몬 이름을 저장할 String타입 배열을 선언한다.
    String 타입 배열은 인덱스가 1부터 시작하므로 N+1개를 할당해야한다.
  2. 포켓몬 이름을 입력받아 해시맵과 배열에 저장한다.
  3. try-catch문으로 검색을 문자로할지 숫자로 할지 정한다.
  4. 입력을 int형으로 변환할 수 있으면 배열에서 해당 포켓몬 인덱스를 StringBuilder 버퍼에 저장한다.
    입력을 int형으로 변환할 수 없으면 해시맵에서 해당 포켓몬 이름을 StringBuilder 버퍼에 저장한다.
  5. 저장된 StringBuilder 버퍼를 출력한다.