먼저 옷의 각 종류에 대해서 옷의 개수를 센다. (옷의 이름은 중요하지 않다. 개수만 알면 된다.) (7~11번째 줄)
만약 옷의 종류가 한 가지라면 옷의 개수만큼 반환한다. (스파이는 최소 1개 이상의 옷을 입어야하기 때문) (13~16번째 줄)
만약 옷의 종류가 한 가지 이상이라면, (종류 1의 개수 + 1) * (종류 2의 개수 + 1) * ... - 1을 반환한다. (옷의 종류에서 1을 더하는 이유는 해당 종류의 옷을 안 입을 수 있기 때문이고, 마지막에 - 1을 하는 이유는 스파이는 최소 1개 이상의 옷을 입어야 하므로, 아무것도 안 입은 경우의 수를 빼야 하기 때문이다.) (17~23번째 줄)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from collections import Counter
def solution(clothes):
answer =0
# make categories dictionary
categories = list()
for name, category in clothes:
categories.append(category)
categories = Counter(categories)
length =len(categories.values())
# if there's only one category
if length ==1:
answer = list(categories.values())[0]
# if there are one more category
elif length >1:
temp =1
for value in list(categories.values()):
# get the combination including the case of NOT wearing an item