๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ฝ”๋”ฉํ…Œ์ŠคํŠธ/TIL

[99ํด๋Ÿฝ] 9์ผ์ฐจ ๋ฌธ์ œ: ์ „์ฃผ ๋“ฃ๊ณ  ๋…ธ๋ž˜ ๋งžํžˆ๊ธฐ

by moon101 2025. 1. 23.

 

 

 

์ „์ฃผ ๋“ฃ๊ณ  ๋…ธ๋ž˜ ๋งžํžˆ๊ธฐ ๋ฌธ์ œ๋กœ hashmap์„ ์‚ฌ์šฉํ•ด์„œ ํ’€๋ฉด ๋œ๋‹ค. ๋‹ค๋งŒ ์–ด๋ ค์šด๊ฑด....์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„???

์ „ํ˜€ ์žฌํ™œ์šฉ ํ•  ์ˆ˜ ์—†๋Š” ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋Š”๋ฐ ๋ณดํ†ต ๋น„๊ธฐ๋„ˆ ๋ ˆ๋ฒจ์˜ ๊ฒฝ์šฐ ์—ฃ์ง€์ผ€์ด์Šค๋ฅผ ํ™•์ธํ•  ์ผ์ด ๊ฑฐ์˜ ์—†์–ด์„œ ์ด๋ ‡๊ฒŒ ํ‘ธ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (ํ•˜์ง€๋งŒ ๋ณ„๋กœ ์ข‹์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ž„...) ๋ฆฌํŠธ์ฝ”๋“œ ์—ญ์‹œ ๋ณดํ†ต easy ๋ ˆ๋ฒจ์˜ ๊ฒฝ์šฐ brute force ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๊ณ  ๋ฌธ์ œ์—์„œ ์–ด๋–ป๊ฒŒ ํ’€์–ด์•ผ ํ•˜๋Š”์ง€ ๋‹ค ์•Œ๋ ค์ฃผ๋Š” ํŽธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ตฌํ˜„ ์—ฐ์Šตํ•˜๊ธฐ์—๋Š” ๋ฆฌํŠธ์ฝ”๋“œ๊ฐ€ ์ •๋ง ๋„์›€์ด ๋งŽ์ด ๋œ๋‹ค. ์ง€๊ธˆ ์ด ๋ฌธ์ œ์—์„œ ํ‚ค๋Š” ํ•ด์‹œ๋งต์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด๋ฐ ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋” ์–ด๋ ค์›Œ์„œ ๋‚œ์ด๋„๊ฐ€ ๋” ๋†’์€ ๋Š๋‚Œ์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๋ฉด ์ข‹๊ฒ ๋Š”๋ฐ ๊ณ„์† ๋ฐฑ์ค€๋งŒ ๋‚˜์˜ค๋„ค.. 

 

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        String[] nm = sc.nextLine().split(" ");
        int N = Integer.parseInt(nm[0]);
        int M = Integer.parseInt(nm[1]);
        
        Map<String, String> hm = new HashMap<>();
        
        for(int i = 0 ; i < N; i++) {
            String[] s = sc.nextLine().split(" ");
            String song = s[1];
            String ryhme = s[2] + s[3] + s[4];
            if(hm.containsKey(ryhme)) {
                hm.put(ryhme, "?");
            }else {
                hm.put(ryhme, song);
            }
        }
       
        for(int i = 0; i < M; i++) {
            String[] s = sc.nextLine().split(" ");
            String ryhme = s[0] + s[1] + s[2];
            if(hm.containsKey(ryhme)) {
                System.out.println(hm.get(ryhme));
            }else {
                System.out.println("!");
            }
        }
    }
}

๋Œ“๊ธ€