def solution(clothes):
answer = {}
# {'headgear': 2, 'eyewear': 1}
for i in clothes:
if i[1] in answer:
answer[i[1]] += 1
else:
answer[i[1]] = 1
cnt = 1
for i in answer.values():
cnt *= (i+1)
return cnt - 1
조합
이라는 단어가 많길래 무조건 combinations
써야하는 줄..(i+1)
: 해당 종류의 옷을 안 입을 때의 경우(1)를 더해준 것cnt - 1
: 아무것도 안 입었을 때의 경우(1)를 뺀 것def solution(clothes):
from collections import Counter
from functools import reduce
# Counter({'headgear': 2, 'eyewear': 1})
cnt = Counter([kind for name, kind in clothes])
answer = reduce(lambda x, y: x*(y+1), cnt.values(), 1) - 1
return answer
collections
모듈의 Counter
클래스from collections import Counter
list = ['kim', 'kim', 'park', 'choi', 'kim', 'kim', 'kim', 'choi', 'park', 'choi']
result = collections.Counter(list)
print(result) # Counter({'kim': 5, 'choi': 3, 'park': 2})
functools
내장 모듈의 reduce()
함수는 여러 개의 데이터를 대상으로 주로 누적 집계를 내기 위해서 사용reduce(집계 함수, 순회 가능한 데이터, 초기값)
lambda 매개변수 : 표현식
from functools import reduce
result = reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
print(result) # 10
한줄평: 잠깐 올라갔던 자존감 내려갔쥬?