https://school.programmers.co.kr/learn/courses/30/lessons/42578
headgear 종류가 2개이고 eyewear 종류가 1개라고 한다면 계산은 (2 + 1) X (1 + 1) - 1 = 5가 된다. 풀어서 써보면 아래와 같다.(2 + 1): headgear만 생각했을때 가능한한 조합의 수는 headgear 종류의 개수에 아무것도 선택하지 않는 것 까지 고려해서 3가지 경우의 수가 나온다.(1 + 1): eyewear도 마찬가지로 생각하면, eyewear 개수 + 아무것도 선택하지 않는 것 까지 고려해서 2가지 경우의 수가 나온다.-1: 위 둘을 곱하게 되면, 모든 가능한한 경우의 수가 나오는데 여기에는 headgear와 eyewear 그 무엇도 선택하지 않는 경우의 수가 포함되어 있으므로 최종 결과에서 -1 해줌으로써 벌거 벗는 경우를 제외해주는 것이다.python
from collections import defaultdict
def solution(clothes):
clothes_count = defaultdict(int)
for _, cloth_type in clothes:
clothes_count[cloth_type] += 1
combination_count = 1
for value in clothes_count.values():
combination_count *= value + 1
return combination_count - 1
if __name__ == "__main__":
result = solution([["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]])
print(result)
5