문제
16165번: 걸그룹 마스터 준석이
정우는 소문난 걸그룹 덕후이다. 정우의 친구 준석이도 걸그룹을 좋아하지만 이름을 잘 외우지 못한다는 문제가 있었다. 정우는 친구를 위해 걸그룹 개인과 팀의 이름을 검색하여 외우게 하는
www.acmicpc.net
알고리즘
해시맵
풀이
팀 이름을 key로, 멤버의 리스트를 value로 저장하는 [팀-멤버 리스트] 해시맵과
멤버 이름을 key로, 팀 이름을 value로 저장하는 [멤버-팀] 해시맵을 만들어
퀴즈의 종류에 따라 적절한 해시맵을 선택해 value를 출력한다.
* 멤버의 이름을 사전순으로 출력해야하므로 리스트를 정렬한 후 해시맵에 삽입한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
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, ArrayList<String>> teamMember = new HashMap<>();
HashMap<String, String> memberTeam = new HashMap<>();
for (int i = 0; i < N; i++) {
String team = br.readLine();
int num = Integer.parseInt(br.readLine());
ArrayList<String> memberList = new ArrayList<>();
for (int j = 0; j < num; j++) {
String member = br.readLine();
memberList.add(member);
memberTeam.put(member, team);
}
Collections.sort(memberList);
teamMember.put(team, memberList);
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < M; i++) {
String name = br.readLine();
int type = Integer.parseInt(br.readLine());
if (type == 0) {
for (String member : teamMember.get(name))
sb.append(member).append("\n");
} else {
sb.append(memberTeam.get(name)).append("\n");
}
}
System.out.println(sb);
}
}
'Algorithm > 백준(BOJ)' 카테고리의 다른 글
[백준] 11562. 백양로 브레이크 (Java) (0) | 2022.10.23 |
---|---|
[백준] 11931. 수 정렬하기 4 (Java) (1) | 2022.10.23 |
[백준] 20955. 민서의 응급 수술 (Java) (0) | 2022.10.22 |
[백준] 2075. N번째 큰 수 (Java) (0) | 2022.10.22 |
[백준] 7785. 회사에 있는 사람 (Java) (0) | 2022.10.20 |