본문 바로가기
코딩테스트 준비/백준

[백준] 16165번 - 걸그룹 마스터 준석이 [Java]

by mwzz6 2025. 1. 4.

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

 

[백준] 16165번 - 걸그룹 마스터 준석이 [Java]
[백준] 16165번 - 걸그룹 마스터 준석이 [Java]
[백준] 16165번 - 걸그룹 마스터 준석이 [Java]


1.  아이디어

 

HashMap과 TreeSet을 활용해서 조건에 맞게 자료 구조를 처리했다.


2. 문제풀이

 

두 개의 HashMap을 활용했는데 하나는 key에 걸그룹 이름, value에 걸그룹 멤버를 저장했고, 하나는 key에 걸그룹 멤버, value에 걸그룹 이름을 저장했다. 첫번째 HashMap은 퀴즈가 0번일 경우 사용했고 걸그룹 멤버를 사전순으로 출력하기 좋게 TreeSet으로 처리했다.


3. 코드

 

import java.io.*;
import java.util.*;

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));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine());

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

        Map<String, TreeSet<String>> map = new HashMap<>();
        Map<String, String> map2 = new HashMap<>();
        for (int i = 0; i < N; i++) {
            String team = br.readLine();
            int size = Integer.parseInt(br.readLine());

            map.put(team, new TreeSet<>());
            for (int j = 0; j < size; j++) {
                String member = br.readLine();
                map.get(team).add(member);
                map2.put(member, team);
            }
        }

        for (int i = 0; i < M; i++) {
            String input = br.readLine();
            int type = Integer.parseInt(br.readLine());

            if (type == 0) {
                for (String member : map.get(input)) {
                    sb.append(member).append("\n");
                }
            } else {
                sb.append(map2.get(input)).append("\n");
            }
        }

        bw.write(sb.toString());
        bw.flush();
    }
}

4. 후기