새소식

Algorithm/BOJ

(JAVA) 백준 1620번 : 나는야 포켓몬 마스터 이다솜

  • -
728x90

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

 

1620번: 나는야 포켓몬 마스터 이다솜

첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면

www.acmicpc.net

 

문제를 읽고 떠오른 생각은 입력 값을 배열에 넣고 M에 대한 입력 값을 정규식으로 Integer 과 String 판별을 진행하면 되겠다!

 

그렇게 하기 위해서 HashMap과 arr 에 값을 입력하고 정규식으로 matches() 를 사용하였다.

 

정규식 사용 예시 코드

// 숫자를 찾기 위한 정규식
String REGEX = "[0-9]+";

String str = br.readLine();

// 입력값에 숫자가 있으면
if(str.matches(REGEX))
{
    ~
}

 

소스코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashMap;
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());
		StringBuilder sb   = new StringBuilder();

		// 숫자를 찾기 위한 정규식
		String REGEX = "[0-9]+";

		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());

		// HashMap index를 맞추기 위해 +1
        	// 입력 값을 저장할 배열 2개 선언
		String[] arr = new String[N+1];
		HashMap<String, Integer> map = new HashMap<>();

        	// HashMap index를 맞추기 위해 +1 
		for(int i=1;i<N+1;i++)
		{
			String name = br.readLine();
			map.put(name, i);
			arr[i] = name;
		}

		while(M-- >0)
		{
			String str = br.readLine();
			
			// 입력값에 숫자가 있으면
			if(str.matches(REGEX))
			{
				sb.append(arr[Integer.parseInt(str)]+"\n");
			}
			else
			{
				sb.append((map.get(str))+"\n");
			}
		}

		System.out.println(sb);
	}
}

 

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.