반응형
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42578
문제 풀이
1. 같은 이름을 가진 의상은 존재하지 않으므로 딕셔너리에 key는 의상의 종류, value는 count를 넣어준다.
2. value를 돌면서 (count+1)을 전부 곱해서 모든 가능한 경우를 구한다.
3. 아무것도 안 입은 경우를 제외시켜야 하므로 1을 뺀 값을 return 한다.
왜 count별로 +1을 해서 곱하는지 이해를 못하는 분들이 많던데 의상 종류별로 의상의 갯수에서 아무것도 안 입는 경우가 있을 수 있으니 +1을 해주는 것이다.
ex) (모자 갯수 + 안 입음(1)) * (안경 갯수 + 안 입음(1)) - 1
파이썬 코드
def solution(clothes):
clothes_dict = {}
for cloth in clothes:
if cloth[1] in clothes_dict:
clothes_dict[cloth[1]] += 1
else:
clothes_dict[cloth[1]] = 1
answer = 1
for i in clothes_dict.values():
answer *= (i+1)
return answer-1
비교적 쉬운 문제이다. 아무것도 입지 않았을 때 +1을 해서 곱하는 부분을 모르겠다면 몇 가지 테스트 케이스를 직접 계산해보면 공식을 쉽게 알 수 있을 것이다.
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 프린터 (level 2) Python 문제 풀이 (2) | 2021.06.26 |
---|---|
[프로그래머스] 기능개발 (level 2) Python 문제 풀이 (0) | 2021.06.25 |
[프로그래머스] 전화번호 목록(level 2) Python 문제 풀이 (0) | 2021.06.16 |
[프로그래머스] 완주하지 못한 선수(level 1) Python 문제 풀이 -2 (0) | 2021.06.15 |
[프로그래머스] 완주하지 못한 선수(level 1) Python 문제 풀이 (0) | 2021.06.15 |
댓글