✏️ 내가 작성한 코드
def solution(clothes):
dic = {}
sum = 1
# 의상 종류별로 의상이름 리스트 만들어서 넣어주기
for cloth in clothes:
if cloth[1] not in dic:
dic[cloth[1]] = []
dic[cloth[1]].append(cloth[0])
# 의상 이름 개수 세기 위해 리스트로 만들기
dicValList = list(dic.values())
for i in range (len(dicValList)):
# 의상 종류에서 아무것도 안입는 경우의 수 1을 추가
# 예) 안경, 선글라스, 아무것도 안 입기
sum *= len(dicValList[i]) + 1
return sum - 1 # 전부 입지 않은 경우의 수 빼야함
✏️ 참고 (sum에서 곱할 때 +1 하면서 곱하는 이유?)
선택지를
dicValList[0] : 동그란 안경, 검정 선글라스, 아무것도 안입기
dicValList[1] : 파란색 티셔츠, 아무것도 안입기
dicValList[2] : 청바지, 아무것도 안입기
dicValList[3] : 긴 코트, 아무것도 안입기
이런식으로 구성한다고 생각하며 +1를 하였다.
그 이유는 예를 들어 의상을 구성할 때
동그란 안경 + 파란색 티셔츠
동그란 안경 + 아무것도 안입기
이런식으로 구성이 가능하기때문에 1개(동그란 안경)만 의상을 착용한 경우도 나타낼 수 있다.
단, 아무것도 안입기 + 아무것도 안입기 + 아무것도 안입기 + 아무것도 안입기 도 sum에 포함되기 때문에
이건 빼줘야하므로 -1을 하면서 return한다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스][python][너비 우선 탐색/BFS] 단어 변환 문제 (0) | 2023.10.27 |
---|---|
[프로그래머스][python][해시] 베스트앨범 문제 (0) | 2023.09.24 |
[프로그래머스][python] 영어 끝말잇기 문제 (0) | 2023.09.15 |
[프로그래머스][python][BFS] 게임 맵 최단거리 문제 (0) | 2023.06.07 |
[프로그래머스][python][깊이/너비 우선 탐색(DFS/BFS)] 네트워크 문제 (0) | 2023.06.06 |