[BOJ]백준#16165 Silver 3 걸그룹 마스터 준석이🧝‍♀️🎤 (Python, 파이썬)

임준성·2022년 8월 9일
0

백준 Algorithm

목록 보기
45/59
post-thumbnail

백준 16165번
https://www.acmicpc.net/problem/16165

문제



후기

⏰ 풀이시간 30분 ++⏰

default dict 라는 dictionary의 서브 클래스에 대해 몰라서 꽤 오랜시간 고민했다.

걸그룹을 키 값으로 받으면, 그 내부에 이중으로 dictionary를 사용해서 걸그룹의

멤버를 받아야 하는데, list를 선언하는 부분에서 미리 선언돼 있지 않아 자꾸 에러가 발생했다.

이 부분을 default dict로 해결할 수 있었다.

default dict는 인자로 주어진 객체의 기본 값을
딕셔너리의 초기값으로 지정할 수 있었다.

이 문제에서 필요한건 dictionary 안에 들어갈 list이므로 list로 선언했다.

이 다음부터는 1이 입력되면 그룹 이름을 딕셔너리에서 찾아서 호출하고,

0이 입력되면 key값을 정렬해서 for문으로 출력한다.

나의 풀이

import sys
input= sys.stdin.readline
from collections import defaultdict

N , M = map(int,input().split()) #걸그룹수, 문제수
li = defaultdict(list) #default 값이 list인 딕셔너리
  
for _ in range(N):
    group = input().rstrip()
    num = int(input())
    for i in range(num):
        name = input().rstrip()
        li[group].append(name) #twice라는 그룹이 있다면, 그 그룹원의 이름을 append한다.

li= dict(li) #다시 dictionary로 바꿔준다. 
  
for _ in range(M):
    quiz_name = input().rstrip() #퀴즈 ( 걸그룹, 걸그룹멤버 둘중하나 )
    quiz_num = int(input())

    if quiz_num == 1: #1일 때는
        for key, values in li.items():
            if quiz_name in values: #해당 걸그룹 멤버를 value값으로 가지는 key를 출력한다.
                print(key)
                break
    elif quiz_num == 0:
        for key, values in li.items(): #해당 걸그룹 멤버들을 정렬해서 출력한다.
            if quiz_name in key:
                values.sort()
                for j in values:
                    print(j)
                break
profile
아무띵크 있이

0개의 댓글