[프로그래머스] 위장 (Python)
2022. 5. 13. 02:54ㆍ알고리즘 & 자료구조
반응형
💁🏻 나의 풀이
def solution(clothes):
answer = 1
items = {}
for item, category in clothes:
if category not in items:
items[category] = []
items[category].append(item)
for k in items.keys():
answer *= len(items[k])+1
return answer-1
- 종류를 key로, 리스트를 item으로 갖는 dict에 모든 옷을 넣음
- 종류별로 최대 하나씩만 입을 수 있기 때문에
각 종류별 옷의 개수 + 1
를모두 곱한 값 - 1
- 각 종류별 옷의 개수 + 1 = 각 옷을 입는 경우 + 하나도 안입는 경우
- 모두 곱한 값 - 1 = 모든 경우의 수 - 하나도 안입는 경우
👀 다른 사람 풀이
🔗 https://programmers.co.kr/learn/courses/30/lessons/42578/solution_groups?language=python3
def solution(clothes):
from collections import Counter
from functools import reduce
cnt = Counter([kind for name, kind in clothes])
answer = reduce(lambda x, y: x*(y+1), cnt.values(), 1) - 1
return answer
- 거의 유사한 풀이 방식
- dict로 배열을 전부 옮기지 않고, Counter로 각 카테고리의 개수만 구함
📚 What I Learned
functools.reduce
- “여러 개의 데이터를 대상으로 주로 누적 집계를 내기 위해서 사용하는 함수”
- for loop를 간소화해서 사용할 수 있는 함수
- 초기값 세팅도 할 수 있어서 간편해 보임
반응형