백준 16165 걸그룹 마스터 준석이 - 자바

손찬호·2024년 5월 15일
0

알고리즘

목록 보기
42/91

풀이 아이디어

해시맵을 사용해 Map<String, String[]>형식으로 key, value로 하고
String key에 그룹 이름을, value인 String[]에 멤버 이름을 저장한 배열을 해시맵에 저장한다.
문제 유형 0이면 팀 이름이 주어지면 속한 팀의 모든 멤버의 이름을 출력한다.
문제 유형 1이면 멤버 이름이 주어지고 속한 팀의 이름을 출력한다.

배운 내용

이 문제를 풀어보며 JAVA util의 해시맵의 사용방법을 배웠다.

Map<key타입, value타입> 해시맵이름 = new HashMap<key타입, value타입>();
-> 해시맵 자료구조를 선언

해시맵이름.get(key)
-> key에 대응되는 value를 반환

해시맵이름.keySet()
-> 해시맵에 있는 모든 key 리스트를 반환.

// 해시맵 선언 방식
Map<String, String[]> groupInfo = new HashMap<String, String[]>();

// key에 해당하는 value인 String[]을 반환
String member : groupInfo.get(quiz)

// 해시맵의 모든 key의 집합을 반환
String groupName: groupInfo.keySet()

풀이 코드

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

public class _16165 {
    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()); // 걸그룹의 수: 1 ≤ N ≤ 100
        int m = Integer.parseInt(st.nextToken()); // 문제의 수: 1 ≤ M ≤ 100

        // 걸그룹 정보 입력
        Map<String, String[]> groupInfo = new HashMap<String, String[]>();

        for(int i=0;i<n;i++){
            String groupName = br.readLine();
            int memberNum = Integer.parseInt(br.readLine());
            String[] member = new String[memberNum];
            for(int j=0;j<memberNum;j++){
                member[j] = br.readLine();
            }
            Arrays.sort(member); // 이름을 사전 순으로 정렬
            groupInfo.put(groupName, member); // 걸그룹 정보 저장
        }

        // 퀴즈 입력과 출력
        for(int i=0;i<m;i++){
            String quiz = br.readLine();
            int quizType = Integer.parseInt(br.readLine());

            // 0이면 quiz팀의 멤버 이름을 전부 출력
            if(quizType == 0){
                for(String member : groupInfo.get(quiz)){
                    System.out.println(member);
                }
            }
            // 1이면 quiz멤버의 그룹 이름 출력
            else if(quizType == 1){
                for(String groupName: groupInfo.keySet()){
                    if(Arrays.asList(groupInfo.get(groupName)).contains(quiz)){
                        System.out.println(groupName);
                        break;
                    }
                }
            }
        }
    }
}
profile
매일 1%씩 성장하려는 주니어 개발자입니다.

0개의 댓글

관련 채용 정보