백준

[백준]1620: 자바-나는야 포켓몬마스터!!!!우하하하하하음하하하하!!!

새우는 맛있새우 2025. 1. 15. 17:22

 

해쉬맵 관련 문제 풀이중 아주 내 스타일인 문제를 만나서 기록한다!!!우하하하하!!!


나의 정답 코드

package map;

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

public class Q4 {
    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<String,Integer> poketmon = new HashMap<>();
        HashMap<Integer,String> poketmon2 = new HashMap<>();
        for (int i = 1; i <= N; i++) {
            String name = br.readLine();
            poketmon.put(name, i);
            poketmon2.put(i, name);
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < M; i++) {
            String Q = br.readLine();
            if (poketmon.get(Q) != null) {
                sb.append(poketmon.get(Q)).append("\n");
            } else {
                sb.append(poketmon2.get(Integer.parseInt(Q))).append("\n");
            }
        }
        System.out.println(sb);
    }
}

 

킬킬

이 문제를 풀때 처음에 시간초과로 틀렸었다. 키값과 벨류값을 오며가며 비교를했다.

숫자로 문제가 주어지냐, 문자열로 문제가 주어지냐에 따라서 상관관계를 출력하는건데, 이를 어떻게 비교를 할 지 하다가

버퍼리더 때문에 문자열을 받아오는데,

이 문자열을 키값으로 했을때 벨류값을 get해본다.

get특성상 키가 존재하지 않으면 value값이 null로 나오므로 

null이 아니라면, 도감 번호를 그대로 get해주면 된다.


반대로, null이 나왔다면, 숫자가 들어왔다는 뜻이니까,

키값과 벨류값을 거꾸로 저장해놓은 포켓몬2 맵 에다가

parseInt해서 벨류값을 출력해준다!!

우하하ㅏ!!!!!