https://school.programmers.co.kr/learn/courses/30/lessons/42578#
def solution(clothes):
answer = 1
clothes_dict = dict()
for c in clothes:
item = c[-1]
for i in range(len(c) - 2, -1, -1):
if item not in clothes_dict:
clothes_dict[item] = set()
clothes_dict[item].add(c[i])
for key in clothes_dict.keys():
answer = answer * (len(clothes_dict[key]) + 1)
return answer - 1
문제 풀이
- clothes의 마지막 원소가 입을 ITEM을 의미하기 때문에 따로 추출한다.
- dict 타입의 value 값으로 set 타입을 넣어준다.
- 안 입은 경우를 생각해서 len(clothes_dict[key]) + 1을 더해주고 answer(1)에 곱해준다. (서로 다른 경우의 수)
- 모든 옷을 안 입은 경우는 없기에 answer에서 -1을 빼줘야 한다.
헤맸던 점
- dict 타입을 다 채워놓고, 서로 다른 경우의 수를 구하는 부분에서 안 입은 경우를 고려해서 구하는 방법을 찾지 못해서 따로 해설을 찾아보았다.
'자료구조 & 알고리즘 관련 > 코딩테스트' 카테고리의 다른 글
콜라 문제 (0) | 2023.01.27 |
---|---|
Design Browser History (0) | 2023.01.26 |
폰켓몬 (0) | 2023.01.23 |
캐시 (0) | 2023.01.23 |
점프와 순간 이동 (0) | 2023.01.23 |