프로그래머스_위장_python
2021. 7. 20. 00:16ㆍ코딩테스트
반응형
https://programmers.co.kr/learn/courses/30/lessons/42578
- clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다.
- 스파이는 하루에 최소 한 개의 의상은 입습니다.
from collections import defaultdict
def solution(clothes):
answer = 1
c_type = defaultdict(int) #값을 저장하지 않으면 0이 됨.
for a, b in clothes:
c_type[b] += 1
for i in c_type:
answer *= c_type[i]+1
return answer-1
[내코드]
defaultdic - 존재하지 않는 키를 조회할 경우, 에러 메시지를 출력하는 대신 디폴트 값을 기준으로 해당 키에 대한 딕셔너리 아이템을 생성함.
종류당 한 항목에 3개 있다면 조합수는 3개(1번고르기, 2번고르기, 둘다 고르지 않기)
모든 종류를 고르지 않을 확률이 있기 때문에 결과에서 -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([kind for name, kind in clothes]) //Counter({'headgear': 2, 'eyewear': 1})
cnt.values //dict_values([2, 1])
reduce(function, iterable[, initializer]) - iterable을 단일 값으로 줄이기 위해 왼쪽에서 오른쪽 으로 iterable 항목에 두 인수의 함수 를 누적 적용 합니다
lambda x,y : x*(y+1)
lambda 인자 : 표현식
function(x,y){
return x*(y+1);
}
반응형
'코딩테스트' 카테고리의 다른 글
프로그래머스_기능개발_python (0) | 2021.07.25 |
---|---|
프로그래머스_베스트앨범_python (0) | 2021.07.21 |
프로그래머스_전화번호 목록_python (0) | 2021.07.18 |
해시란? (0) | 2021.07.18 |
프로그래머스_완주하지 못한 선수_python (0) | 2021.07.18 |