728x90
programmers.co.kr/learn/courses/30/lessons/42578
접근
딕셔너리를 활용해서 풀 수 있겠지만 단순히 경우의 수를 구해서 풀 수 있을 것 같았다.
하지만 경우의 수를 구할 줄 몰랐고 한번 찾아봤다.
먼저 입어야하는 옷을 카테고리 별로 구분을 했을 때, 카테고리 별 옷의 개수를 각각 곱해준다면 모든 옷을 선택해서 입을 수 있는 경우의 수가 된다.
하지만 문제에서는 하나 이상을 무조건 입어야한다고 했고 이 말은 카테고리 별로 다입지 않고 하나만 입어도 된다는 뜻이다.
이것의 경우의 수를 구한다면 카테고리 별의 옷의 개수에 +1을 해주고 모두 곱해준다.
+1을 해주는 것은 옷을 입지 않았을 때의 경우를 추가한 것이다.
마지막으로 위의 식으로 모두 계산이 되었다면 옷을 하나도 입지 않은 경우도 포함이 되어있기 때문에 -1을 해준다.
구현
- 먼저 딕셔너리를 선언한다.
- 그리고 clothes를 탐색하고 각각의 리스트에서 1번 인덱스를 key값으로 딕셔너리에 추가한다.
- 아직 해당 key가 존재하지 않는다면 1을 넣고 존재한다면 value를 +1한다.
- 이제 각각의 key값으로 접근하여 value에 +1을 해주어 answer에 곱해준다.
- 마지막으로 -1을 해주고 최종 반환을 한다.
def solution(clothes):
answer = 0
clothes_dict = {}
for clothe in clothes:
key = clothe[1]
if key in clothes_dict:
clothes_dict[key] += 1
else:
clothes_dict[key] = 1
answer = 1
for key in clothes_dict:
answer *= (clothes_dict[key] + 1)
answer -= 1
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level 3] 야근 지수 (0) | 2021.04.15 |
---|---|
[Level 3] 순위 (0) | 2021.03.31 |
[Level 3] 입국심사 (0) | 2021.03.29 |
[Level 2] 이진 변환 반복하기 (0) | 2021.03.27 |
[Level 2] 문자열 압축 (0) | 2021.03.25 |