개발자 미니민의 개발스터디

[백준 JAVA] 1620번 풀이 - 나는야 포켓몬 마스터 이다솜 (✨적절한 함수를 만드는 연습!!)

by mini_min

package baekjoon;

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

/**
 * 1620 - 나는야 포켓몬 마스터 이다솜
 * 포켓몬 도감을 완성시킨다. 
 * 1. 현재 가진 도감에서 이름을 보면 번호를 말하거나, 
 * 번호를 보면 이름을 말하는 연습을 해라. 
 * 
 * 1. 도감에 수록된 포켓몬 수 n / 맞춰야할 문제 개수 m
 * 2. n개의 줄에 포켓몬 번호가 1인 포켓몬부터 n번 포켓몬까지 입력
 * (모두 영어이름, 첫글자만 대문자, 나머지는 소문자.)
 * but 일부 포켓몬은 마지막 문자만 대문자일 수 있음
 * 
 * 그 다음에 m개의 줄에 내가 맞춰야할 문제가 입력됨
 * 알파벳 -> 번호 말하기. 번호 -> 알파벳 (이름) 말하기. 
 * 문제는 반드시 도감에 있는 포켓몬만 주어짐. 
 *  
 *  
 *
 */
public class _1620 {
	
	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());

		HashMap<Integer, String> map1 = new HashMap<>();
		HashMap<String, Integer> map2 = new HashMap<>();
		
		for ( int i = 0; i < n; i++ ) 
		{
			String monster = br.readLine();
			map1.put(i+1, monster);
			map2.put(monster, i+1);
		}
		
		StringBuilder sb = new StringBuilder();
		
		//바로 문제 시작.
		for ( int i = 0; i < m; i++ ) 
		{
			String quiz = br.readLine();
			
			if ( isNumber(quiz) ) 
			{
				sb.append(map1.get(Integer.parseInt(quiz))+"\n");
			}
			else 
			{
				sb.append(map2.get(quiz)+"\n");
			}
		}
		
		System.out.println(sb.toString());

	}
	
	public static boolean isNumber(String word) {
		
		try {
			
			Integer.parseInt(word);
			return true;
			
		} catch (NumberFormatException e) {
			return false;
		}

	}

}

 

풀이

이 문제는 포켓몬 도감 검색 기능을 만드는 것이다. 

1. 조건 : 포켓몬 ID 번호로 검색하거나, 포켓몬 이름으로 검색

 

✨ 처음 시도한 풀이 
- 하나의 map 을 가지고 containsValue, containsKey 메서드로 풀려고 했음 
- 결과적으로 잘 안됨...

 

입력 받는 문제가 문자열인지, 숫자인지 파악하는 함수를 만들 생각을 빨리 했으면 좋았을 텐데....!

"어떻게 숫자인지 문자열인지 파악하지?" <- 이 생각을 오래하다보니 문제 풀이가 늦어졌다.

 

main 안에서만 해결하려고 하지 말고, 적절하게 필요한 함수를 만드는 연습을 많이 해야할 것 같다. 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기