1. 문제
2. 풀이 과정
방법 1) hash 자료구조를 이용해서 옷 종류별로 몇 개씩 있는지 count한 후, 특정 종류는 선택 안 할 경우도 있으니 각 종류별로 안 입을 경우를 1씩 더해서 조합의 개수를 count한다.
여기서 모두 선택 안 할 경우 1가지를 빼주면 결과값이 된다.
def solution(clothes):
answer = 1
hash_map = {}
#종류별로 개수 count
for i in clothes:
if i[1] in hash_map:
hash_map[i[1]] += 1
else:
hash_map[i[1]] = 1
#결과 계산
arr = list(hash_map.values())
for i in arr:
answer *= (i+1)
return answer-1
방법 2) 논리는 위의 방법과 동일하며, 라이브러리 함수를 사용해 작성한 것이다.
*Counter = 리스트에서 각 요소의 개수를 dict형태로 반환함
*reduce = 여러 개의 데이터를 누적 집계 내기 위해 사용함
결과 = reduce(집계내는 함수(인자1: 중간 집계 결과 저장할 값, 인자2: 현재 값), 순환 가능한 데이터, 집계 시작값)
from collections import Counter
from functools import reduce
def solution(clothes):
#종류 리스트를 만들어 종류별 개수 count
counting = Counter([kind for name, kind in clothes])
#조합 계산
answer = reduce(lambda result, x : result*(x+1), counting.values(), 1) - 1
return answer
'코딩문제풀이 > 프로그래머스' 카테고리의 다른 글
[Python] 프린터 (0) | 2021.08.25 |
---|---|
[Python] 기능 개발 (0) | 2021.08.24 |
[Python] 전화번호 목록 (0) | 2021.08.24 |
[Python] K번째 수 (0) | 2021.08.23 |
[Python] 완주하지 못한 선수 (0) | 2021.08.23 |