https://school.programmers.co.kr/learn/courses/30/lessons/42578
def solution(clothes):
dic = {}
answer = 1
for i in range(len(clothes)):
if clothes[i][1] in dic: # 키가 있으면 리스트에 추가
dic[clothes[i][1]].append(clothes[i][0])
else:
dic[clothes[i][1]] = [] # 키가 없으면 리스트 만들고 추가
dic[clothes[i][1]].append(clothes[i][0])
for j in dic: # j는 키 값
# 키에 따른 value의 길이 + 1을 answer에 곱한다.
# + 1은 의상의 종류에서 입지 않는 조합
answer *= len(dic[j]) + 1
return answer - 1 # 모든 의상의 종류를 하나도 입지 않는 것을 빼준다.
<예제 1번>
headgear : 종류가 2가지이다. 미착용한 경우, 첫번째 기어 착용한 경우, 두번째 기어 착용한 경우 -> 3가지 경우의 수
eyewear : 종류는 1가지이다. 미착용한 경우, 첫번째 eyewear 착용한 경우 -> 2가지 경우의 수
총 3 * 2 = 6가지 경우의 수가 있다.
그러나 이 경우의 수 중 headgear, eyewear를 둘 다 착용하지 않은 경우도 있으니 1을 빼준다.
따라서 5가지가 나온다.