의상의 이름과 종류 쌍들이 배열형태로 주어질 때, 의상의 종류별로 중복없이 최소 한 개 이상 착용할 수 있는 경우의 수를 반환하는 함수 작성
def solution(clothes):
dic = {}
for item, category in clothes:
if category not in dic:
dic[category] = [item]
else:
dic[category].append(item)
cnt = 1
for cat in dic
cnt *= len(dic[cat]) + 1
return cnt - 1
collections의 defaultdict을 이용하여 로직 단순화from collections import defaultdict
def solution(clothes):
cnt = 1
c_dict = defaultdict(list)
for item, category in clothes:
c_dict[category].append(item)
for cat in c_dict:
cnt *= len(c_dict[cat]) + 1
return cnt - 1
clothes는 [["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]]형태로 주어지며, 이는 [장비 이름, 종류] 형태.clothes 배열을 for Loop으로 순회하며 해당 개체 정보를 dict()타입 변수 dic에 저장dic 내부에 존재하지 않을 경우 배열의 형태로 장비 이름 추가cnt 초기값을 설정하되, 다양한 종류의 조합을 계산하는 방법은 곱연산이므로, 초기값은 1로 설정dic를 순회하며 키(종류) 별 값(이름)의 수에 1을 더한 값(해당 장비를 착용하지 않았을 때 포함)을 cnt에 곱함