-->

[프로그래머스] 해시 - 위장 (파이썬)

반응형

프로그래머스 해시 - 위장, 문제 확인

문제 설명은 아래와 같다.

 


스파이들은 매일 다른 옷을 조합해 자신을 위장함

clothes는 스파이가 가진 의상들이 담긴 2차원 배열, 각 행은 [의상이름, 종류]로 이루어져 있음

의상 수는 1개 이상, 30개 이하

같은 이름을 가진 의상은 없음

하루에 최소 한개의 의상은 입어야 함

서로 다른 옷의 조합 수를 리턴하도록 solution 함수를 작성

 

 

프로그래머스 해시 - 위장, 문제 풀이 (파이썬)

 

[[yellow_hat, headgear], [blue_sunglasses, eyewear], [green_turban, headgear]]

 

 

최소 한개 이상은 입게 하면서 모든 옷 조합 수를 구하려면 (의상종류+1)을 모두 곱한 후 -1(반드시 하나는 선택)을 해주면 된다. 예를 들어 clothes가 위와 같을 경우, headgear에 해당하는 종류가 2, eyewear에 해당하는 종류가 1이기 때문에 (2+1)*(1+1)=6이고 6-1=5가 리턴값이 되는 것이다.

 

따라서, clothes 배열을 돌면서 의상종류를 확인해 의상종류 당 의상 수가 몇개인지 확인한다. 그리고 각 수를 모두 곱한 multiple 값에 -1을 해준 값을 리턴한다.

 

def solution(clothes):
    cloth_dict={}
    for i,v in enumerate(clothes):
        if v[1] in cloth_dict: cloth_dict[v[1]]+=1
        else: cloth_dict[v[1]]=2

    multiple=1
    for i,v in enumerate(cloth_dict.values()): multiple*=v

    return multiple-1

 

 

아래와 같이 채점을 통과할 수 있다.

 

 

 

댓글

Designed by JB FACTORY