## 의사코드 ##
# clothes의 각 행은 [의상의 이름, 의상의 종류]
# -> 해시를 dict로 생성해서 key: 의상 종류, value: 의상 이름
# 하루에 딱 하나의 의상을 입는 경우부터 세는 거니까 모든 경우의 수 구하기
# 모든 의상 종류를 안 입는 경우인 한 가지 빼기
통과한 코드
from collections import defaultdict
def solution(clothes):
answer = 1
closet = defaultdict(list) # 해시 생성
# 해시에 데이터 삽입 -> {의상 종류: [의상 이름1, 의상 이름2, ...], 의상 종류: [의상 이름1, 의상 이름2, ...], ...}
for name, category in clothes:
closet[category].append(name)
# 조합 구하기
for k in closet.keys():
answer = answer * (len(closet[k]) + 1) # 의상 종류별로 (의상의 개수 + 1)을 곱해서 모든 경우의 수를 구함
return answer - 1 # 모두 안 입는 경우는 빼기
-> defaultdict를 활용해서 key가 중복되는 경우, value 값을 리스트로 추가함
defaultdict()
dict type의 값에 기본 값을 지정
신규 값 생성 시 사용하는 방법
from collections import defaultdict
그냥 dict에 key: 의상 종류, value: 의상 이름을 넣는 경우
clothes = [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]
h = dict()
for c in clothes:
h[c[1]] = c[0]
print(h)
"""
{'headgear': 'yellow_hat'}
{'headgear': 'yellow_hat', 'eyewear': 'blue_sunglasses'}
{'headgear': 'green_turban', 'eyewear': 'blue_sunglasses'}
"""