코딩문제풀이/프로그래머스

[Python] 위장

코딩하는 포메라니안 2021. 8. 24. 20:59

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