조합을 이용했다.
(조합은 서로 다른 n개에서 순서에 상관없이 r개를 선택하는 것이다.)
예를 들어보자.
2개의 모자 종류와 1개의 안경은 종류가 있다.
아래와 같이 경우의 수를 구할 수 있다.
문제에서 '스파이는 하루에 최소한 한 개의 의상은 입습니다'라고 했다.
따라서 아무것도 안 입는 경우를 제외시켜야 한다.
빨간색으로 표시한 부분이 그 부분이다.
(Π (의상 종류 + 1)) - 1
식은 이와 같다.
def solution(clothes):
dic = {}
for li in clothes:
c, k = li
if dic.get(k, 0):
dic[k] += 1
else:
dic[k] = 2
answer = 1
for val in dic:
answer *= dic[val]
return answer - 1
dic[k]의 초깃값이 1이 아닌 이유는 안 입는 경우도 초깃값에 넣어놨기 때문이다. (의상 종류에 1를 더하는 이유와 같다.)
그리고 dic에서 개수를 구하는 부분에 Counter를 써도 됐을 것 같다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Python] 프린터 (0) | 2021.11.10 |
---|---|
[프로그래머스][Python] 기능개발 (0) | 2021.11.05 |
[프로그래머스][Python] 베스트앨범 (0) | 2021.11.03 |
[프로그래머스][Python] 전화번호 목록 (0) | 2021.11.01 |
[프로그래머스][Python] 완주하지 못한 선수 (0) | 2021.10.29 |