728x90
반응형
문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/42578
풀이 :
첫시도
dic = dict()
for (key, value) in clothes:
if value in dic:
dic[value].append(key)
else:
dic[value] = [key]
# dics = {value: [key] if value not in dic else dic[value] for key, value in clothes}
res = 0
num = []
for i in "headgear", "eyewear", "face" :
if i in dic:
res += len(dic[i])
num.append(len(dic[i]))
if len(num) > 1 :
res += reduce(lambda x, y: x * y, num)
테스트 코드 빼고 다 틀림
from functools import reduce
def solution(clothes):
dic = {y : 0 for x, y in clothes}
for i in clothes:
dic[i[1]] += 1
print(dic.values())
return reduce(lambda x,y: x*y,[i+1 for i in dic.values()]) - 1
-1 해주는 이유 아무것도 안 입었을때 변수
ex) 1,2,x 이고 4,x
일때 x x 일경우가 있으니 둘다 안입어서 하나 빼준다.
from functools import reduce
>>> reduce(lambda x, y: x + y, a)
변수 x,y 지정하고 x+y 값 리턴한다, a라는 순회가능한 리스트 담아준다.
만약 a= [1,2,3,4,5] 이면 15를 뽑아준다.
근데 1+2 도 출력하고 1+2+3 도 출력하고 ,,, 1+2+3+4+5 를 출력하고싶으면
a = [1,2,3,4,5]
print(reduce(lambda x,y : x+y, a))
for i in range(1, len(a) + 1):
print(reduce(lambda x, y: x + y, a[:i]))
이런식으로 사용하면 된다.
반응형
댓글