의상 문제 바로가기
나의 풀이#
def solution(clothes):
wardrobe = {}
for c in clothes:
if c[1] in wardrobe:
wardrobe[c[1]] += 1
else:
wardrobe[c[1]] = 1
temp = 1
print(wardrobe.values())
for i in list(wardrobe.values()):
temp *= (i+1)
return temp-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
CODE REVIEW#
- 옷입히기 게임같은 문제. (의상 종류+1)를 각각 곱해주고 마지막에 1을 빼면 답이 나온다.
reduce()
메소드은 처음 보는데 python docs에서 관련 정보를 찾을 수 있었다. 어떤 iterable한 것에서 single value가 될 때 까지 과정을 반복하는 메소드이다.
- for문을 축약해주긴 하지만 가독성이 떨어져서 자주 사용할 것 같진 않다. 일단 알아두자!