문제 풀이
def solution(clothes):
answer = 1
arr = list()
# 배열 arr에 옷의 종류(key)만 넣어줌
for val, key in clothes:
arr.append(key)
# 중복을 제거하기 위해 set을 사용. 이렇게 하면 옷의 종류 하나씩만 남게 됨
s = set(arr)
cnt = list()
# 옷의 개수를 cnt배열에 추가
for i in s:
cnt.append(arr.count(i))
# 하단 설명 참조
for i in cnt:
answer *= (i + 1)
answer -= 1
return answer
여기에서는 (a+1)(b+1)(c+1)...-1라는 공식을 사용하였습니다.
예를 들어 headgear가 5개, eyewear가 3개 있다고 해봅시다. headgear 부분에서 5개 중 하나를 고르거나 입지 않는 경우, (5+1)의 식이 탄생합니다. (5(옷의 개수) + 1(입지 않는 경우))가 되겠지요. 이어서 eyewear의 경우에도 (3 + 1)의 식이 나올 수 있지요. 이를 대수식으로 표현하면 (a+1) * (b+1) 의 식이 나옵니다.
다음 줄을 보면 answer에 -1이 붙어있습니다. 이는 "아무것도 입지 않은 경우"를 제외하기 위함입니다.
문제 링크
programmers.co.kr/learn/courses/30/lessons/42578
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [Python] 기능 개발 (0) | 2020.11.23 |
---|---|
[프로그래머스] [Python] 주식가격 (0) | 2020.11.19 |
[프로그래머스] [Python] 베스트앨범 (0) | 2020.11.19 |
[프로그래머스] [Python] 전화번호 목록 (0) | 2020.11.18 |
[프로그래머스][Python] 완주하지 못한 선수 (0) | 2020.11.18 |