문제
문제 이해
- 각 종류별로 최대 한 가지 의상만 착용 가능
- 착용한 의상의 일부가 겹쳐도 다른 의상이 겹치지 않거나 추가로 착용하면 다른 경우로 봄
- 하루에 최소 한 개의 의상을 입음
- 의상이 담긴 2차원 배열 clothes, [의상의 이름, 의상의 종류]로 구성
- 서로 다른 옷의 조합의 수를 반환
풀이
아무 것도 입지 않는 경우를 포함한 모든 경우를 구하는 방법은 (N + 1)(M + 1)...(P + 1)
아무 것도 입지 않는 경우를 제외해야 하므로 (N + 1)(M + 1)...(P + 1) - 1
- 의상의 종류 별 개수를 구하기 위해 dictionary 사용
- 반복문으로 배열 clothes를 순회하며 해당 의상의 종류의 개수를 구함(단, 입지 않는 경우를 위해 2로 초기화)
- dictionary를 순회하며 2에서 구한 의상의 개수를 모두 곱하고 1(아무 것도 입지 않는 경우)을 뺌
코드
def solution(clothes):
dic = dict()
for cloth, category in clothes:
if not category in dic.keys():
dic[category] = 2
else:
dic[category] += 1
cnt = 1
for num in dic.values():
cnt *= num
return cnt - 1
'알고리즘 연습 > 프로그래머스' 카테고리의 다른 글
[Python - Lv.2] 전화번호 목록 (0) | 2024.03.21 |
---|---|
[Python - Lv.2] 프로세스 (0) | 2024.03.20 |
[Python - Lv.2] 기능개발 (3) | 2024.03.18 |
[Python - Lv.2] n^2 배열 자르기 (0) | 2024.03.17 |
[Python - Lv.2] [1차] 캐시 (0) | 2024.03.16 |