1️⃣ 문제 설명
스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장한다.
스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때
서로 다른 옷의 조합의 수를 return
- clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다.
- 스파이는 하루에 최소 한 개의 의상은 입습니다.
2️⃣ 풀이 전 계획과 생각
- 입력값을 받아 딕셔너리에 저장
- 각 의상의 종류의 갯수를 다 곱한다.또한 모두 안 입는 경우는 없다고 했으니 최종 곱한 값 -1 하기
- How? 각 경우를 다 곱해주면 된다. 각 의상의 종류별로 아무것도 안 입는 경우가 있으니 각 의상 종류마다 의상의 갯수+1 한다.
3️⃣ 풀이
def solution(clothes):
closet = {}
result = 1
for clothe in clothes:
key = clothe[1]
value = clothe[0]
if key in closet:
closet[key].append(value)
else:
closet[key] = [value]
for key, value in closet.items():
result *= len(value)+1
result -= 1
return result
4️⃣ 풀이 후 알게된 개념과 소감
- 처음에는 안 입는 경우의 수를 떠오르지가 않았다.
- → 입력값을 보며 경우의 수를 파악해보니, 안하는 경우의 수도 한가지의 경우의 수임을 알게 되었고, 추가해주었다.
- 해쉬테이블 저장 :
- key값이 초기화 되지 않은 경우 → hashtable[key] = value
- 그외 → hashtable[key].append(value)
'Problem Solving' 카테고리의 다른 글
[백준] 10819 : 차이를 최대로 / python (0) | 2022.01.25 |
---|---|
[프로그래머스] 더 맵게 / python (0) | 2022.01.04 |
[프로그래머스] 올바른 괄호 문자열 만들기 (2020 KAKAO BLIND) / python (0) | 2021.12.29 |
[프로그래머스] 구명보트 / python (0) | 2021.12.29 |
[프로그래머스] 기능개발 / python (0) | 2021.12.29 |