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

Sundae·2023년 12월 4일
0

백준

목록 보기
26/63
post-thumbnail
post-custom-banner

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


문제


(??)

이번 문제는 컨셉이 좀 재밌었던 것 같다.


내가 이해한 바로는 1번 포켓몬부터 N번에 해당하는 포켓몬이 도감에 등록되는 듯 하다.

그리고 M개의 수 만큼 포켓몬 이름 또는 번호가 주어지며 포켓몬 이름이 들어왔을 때는 번호를, 포켓몬이 저장되어있는 위치의 번호가 주어졌을 때는 포켓몬 이름을 출력하면 된다고 한다.

풀이과정

입력에 포켓몬 이름이 주어지면 도감에 등록되어 있는 해당 포켓몬의 번호를 출력하라고 했다.

어차피 포켓몬은 도감 순서대로 저장되니 반복문의 반복 변수를 1부터 설정하여 저장하면 무리없이 번호를 출력할 수 있을 것이다.

입력으로 포켓몬 이름이 아닌 번호가 들어올 때도 생각해주어야한다. 이때도 어차피 포켓몬은 입력 순서대로 저장되니 반복문의 반복 변수로 인덱스를 매겨주고 해당 인덱스에 포켓몬 이름을 저장한다.

public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st = new StringTokenizer( br.readLine(), " " );
        
		int N = Integer.parseInt( st.nextToken() );
		int M = Integer.parseInt( st.nextToken() );
		// 이름 저장할 HashMap
		Map<String,Integer> names = new HashMap<>();
        // 도감 번호로 들어올 때 사용할 String[]
		String[] numbers = new String[N+1];
        
		for( int i = 1; i <= N; i++ ){
        
			String pocketmon = br.readLine();
            // HashMap에 포켓몬 이름 저장
			names.put( pocketmon, i );
            // 배열에도 저장
			numbers[i] = pocketmon;
            
		}
		// M만큼 반복
		for( int i = 0; i < M; i++ ){
        
			String pocketmon = br.readLine();
            // 입력이 숫자라면 배열 인덱스에 접근
			if( '9' >= pocketmon.charAt(0)  )
				sb.append(numbers[Integer.parseInt(pocketmon)]).append("\n");
            // 입력이 포켓몬 이름이라면 HashMap에 접근
			else
				sb.append(names.get(pocketmon)).append("\n");
		}

		System.out.println(sb);

	}
profile
성장 기록 / 글에 오류가 있다면 댓글 부탁드립니다.
post-custom-banner

0개의 댓글