백준 알고리즘 16165번
https://www.acmicpc.net/problem/16165
16165번: 걸그룹 마스터 준석이
정우는 소문난 걸그룹 덕후이다. 정우의 친구 준석이도 걸그룹을 좋아하지만 이름을 잘 외우지 못한다는 문제가 있었다. 정우는 친구를 위해 걸그룹 개인과 팀의 이름을 검색하여 외우게 하는
www.acmicpc.net
16165번
입력으로 첫 줄에 걸그룹 수 N과 문제 수 M이 들어온다. 그 다음 줄 부터 걸그룹 이름, 걸그룹 인원 수, 멤버의 이름이 들어온다. N개의 걸그룹에 대한 정보가 모두 들어왔으면 그 다음 줄 부터 M개의 문제가 주어진다. 각 문제는 두 줄로 이루어져있는데 첫 줄은 팀의 이름이나 멤버의 이름이고 둘째 줄은 퀴즈의 종류를 나타낸다. (만약 퀴즈의 종류가 0일 경우 팀의 이름이 주어지며 1일 경우 멤버의 이름이 주어진다.)
출력으로는 M개의 문제에 대한 정답을 출력한다. 팀의 이름이 주어졌을 경우 해당 팀에 해당하는 멤버를 사전순으로 출력하고 멤버의 이름이 주어졌을 경우 해당 멤버가 속한 팀의 이름을 출력한다.
문제 해결
이 문제를 보고서 파이썬의 dictionary를 이용하면 쉽게 풀 수 있을 것 같다는 생각이 들었다.
퀴즈의 종류가 팀의 이름을 받고 해당 팀의 멤버의 이름을 사전순으로 출력하는 것과 멤버의 이름을 받고 팀의 이름을 출력하는 것 두 종류이기 때문에 dictionary를 2개 만들었다.
dictionary
1. group_names : key가 팀 이름, value가 해당 팀의 멤버 이름 리스트
2. name_group : key가 멤버 이름, value가 해당 멤버의 팀 이름
위에 설명한 dictionary를 잘 만들면 된다!
코드
n, m = map(int, input().split()) # N은 걸그룹 수, M은 문제 수
group_names = {}
name_group = {}
for i in range(n):
gname = input()
num = int(input())
people = ["" for _ in range(num)]
for j in range(num):
a = input()
name_group[a] = gname
people[j] = a
people.sort()
group_names[gname] = people
for i in range(m):
quiz_name = input()
quiz_kinds = int(input())
if quiz_kinds == 0:
for ans_name in group_names[quiz_name]:
print(ans_name)
elif quiz_kinds == 1:
print(name_group[quiz_name])
결과
'Algorithm' 카테고리의 다른 글
백준 16769번 <Mixing Milk> (0) | 2022.01.20 |
---|---|
백준 9037번 <The Candy War> (0) | 2022.01.19 |
백준 17389번 <보너스 점수> (0) | 2022.01.18 |
백준 17269번 <이름궁합 테스트> (0) | 2022.01.18 |
백준 16398번 <행성연결> (0) | 2021.12.22 |
댓글