https://programmers.co.kr/learn/courses/30/lessons/42578
각 옷의 종류에 따라 dict를 초기화하고, 그 옷의 조합인 (N+1)*(M+1) -1 하면 된다. (-1은 모든 옷 종류 꺼내지 않았을 경우는 인정되지 않으므로 하나 빼 주는 것)
나의 풀이
from collections import defaultdict
def solution(clothes):
answer = 1
cloth_dict = defaultdict(list)
for cloth in clothes:
cloth_dict[cloth[1]].append(cloth[0])
for cloth in cloth_dict.values():
answer *= (len(cloth)+1)
return answer -1
다른 풀이
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
Counter 활용해서 각 옷 종류에 따라 개수를 세주고
reduce로 옷 개수에 따라 곱해주는 함수를 활용한 깔끔한 풀이라 가져왔다.
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 셔틀버스 (Python) (0) | 2021.10.30 |
---|---|
[프로그래머스] 베스트앨범 (Python) (0) | 2021.10.29 |
[프로그래머스] 소수 찾기 (Python) (0) | 2021.10.29 |
[프로그래머스] H-Index (Python) (0) | 2021.10.29 |
[프로그래머스] 단속카메라 (Python) (0) | 2021.10.28 |
댓글