해시맵을 사용해 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;
}
}
}
}
}
}