배운 점 : 수학적 지식과의 결합
부끄럽게도, 경우의 수를 풀지 못하여 한참동안 코드를 고민하였다. 방법 자체는 지난 번에 풀었던 [완주하지 못한 선수] 와 크게 다르지 않았으나, 계산하는 방법을 몰라 한참동안 고민했다.
코드
def solution(clothes):
answer = {}
for i in range(len(clothes)):
answer[clothes[i][1]] = answer.get(clothes[i][1], 0) + 1
a = 1
for j in answer:
a = a * (answer.get(j)+1)
return a - 1
마지막에 -1을 해준 이유는, 아무것도 안 입은 경우는 없다고 했기 때문이다.
수학적으로 (x+1) (y+1) (z+1) = x + y + z + xy + yz + zx + xyz + 1 와 같이 표현되는데, 여기서 +1을 빼는 경우와 동일하다. 그 외에는 딕셔너리를 사용하여, 어떤 종류가 나올 떄마다 그 종류를 딕셔너리에 넣고, 0부터 +1을 해줘서 풀었다.