본문 바로가기

CodingTEST

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

반응형

백준 1620번 문제 - 나는야 포켓몬 마스터 이다솜

 

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

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

www.acmicpc.net


문제 분석

 

  • 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어진다.
  • 문제가 알파벳으로만 들어오면 포켓몬 번호를 말해야 하고, 숫자로만 들어오면, 포켓몬 번호에 해당하는 문자를 출력한다.

 

해결 키 포인트

 

  • 하나의 ArrayList만 가지고는 시간초과 발생
    • Why? ArrayList에서 문자열을 찾으려할 때, indexOf(s)를 사용하는데 시간초과 발생
  • 문자열로 쉽게 찾을 수 있게하기 위해 HashMap으로 String을 Key로 index 번호를 value로 구현
  • 입력값이 숫자인지 문자열인지 판단하기 위해 try-catch 문에 문자열을 숫자로 변환한다.
    • 변환시 오류가 나면 숫자가 아니라 문자열로, 오류가 안나면 숫자로 설정

코드

 

import java.io.*;
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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        String [] monsters = new String[N];
        HashMap<String, Integer> hashMap = new HashMap<>();
        for (int i = 0; i < N; i++) {
            monsters[i] = br.readLine();
            hashMap.put(monsters[i], i);
        }

        for (int i = 0; i < M; i++) {
            String s = br.readLine();
            int index;
            try {
                index = Integer.parseInt(s);
            }  catch (IllegalArgumentException e) {
                index = -1;
            }

            if(index == -1) {
                bw.write(hashMap.get(s) + 1 + "\n");
            }
            else {
                bw.write(monsters[index-1] + "\n");
            }
        }

        bw.flush();
        bw.close();
    }

}
반응형

'CodingTEST' 카테고리의 다른 글

[백준 17219] 비밀번호 찾기 (JAVA)  (1) 2023.12.05
[백준 11723] 듣보잡 (JAVA)  (1) 2023.12.05
[백준 11723] 집합 (JAVA)  (0) 2023.12.05
[백준 18110] solved.ac (JAVA)  (0) 2023.12.05
[백준 4949] 균형잡힌 세상 (JAVA)  (0) 2023.12.05