def solution(clothes):
answer = 1
closet = {} #dictionary 선언
for cloth in clothes:
#dictionary에 key가 존재하면, 해당 key에 value 추가
if cloth[1] in closet.keys():
closet[cloth[1]].append(cloth[0])
#dictionary에 key가 존재하지 않는다면, dictionary 추가
else:
closet[cloth[1]] = [cloth[0]]
for value in closet.values():
answer *= len(value) + 1
return answer - 1
문제 해결 포인트가 해시였지만, 어떻게 풀어야 할지 몰라 다른 사람의 문제 풀이를 참고하여 해결하였다.
먼저 매개변수로 입력 받은 clothes 문자열을 순회하며, closet에 같은 옷 종류의 옷끼리 묶어 정리한다. closet에 옷 종류가 있다면 append로 값을 추가하고, closet에 옷 종류가 없다면 리스트를 추가하는 방식으로!
다음으로 정리된 closet을 가지고 경우의 수를 구하면된다.
경우의 수는 종유별로 옷을 0개 혹은 1개 입는다. 각 종류별로 입을 수 있는 옷의 개수에 안입는 경우 1을 더하여 그 값들을 모두 곱하면 값을 구할 수 있다.
이때 아무것도 안입으면 안되므로 아무것도 안입는 경우 1을 빼면 문제의 정답을 구할 수 있다.