상세 컨텐츠

본문 제목

[프로그래머스] 해시 - 위장 (결과 포함)

개발 공부 (알고리즘)

by letprogramming 2021. 8. 21. 22:30

본문

반응형

이 문제는 종류 별로 가능한 경우의 수를 구하는 문제이다.

종류가 없다면 모든 경우의 수를 구하면 되지만 종류가 존재하기 때문에 딕셔너리를 이용했다.

 

그리고 모든 종류에서 하나씩 선택하지 않아도 되고 하나만 선택하는 경우의 수도 존재한다.

 

딕셔너리를 선언해서 종류안에 리스트를 선언해서 의상들을 추가했다.

종류와 의상은 정해져 있지 않기 때문이다.

 

그 다음 각 종류별로 몇 개의 의상이 있는지 개수를 리스트에 저장했다.

전체 조합의 수를 구하면 되기 때문에 개수만 저장했다.

 

경우의 수를 구할 때 모든 경우의 수에서 하나도 선택하지 않는 경우의 수를 뺐다.

현재 종류 별로 선택 가능한 의상의 수를 알기 때문에 모두 곱하면

종류 별로 하나씩 무조건 선택했을 때 경우의 수를 알 수 있다.

그러나 종류 별로 선택하지 않아도 된다. 그러므로 곱할 때 각 종류 별 의상 개수에 1을 더했다.

그 이유는 선택하지 않는 경우의 수를 고려하기 위해서이다.

 

def solution(clothes):
    answer = 0
    dic = {}
    result = []
    for cloth in clothes:
        if cloth[1] not in dic:
            dic[cloth[1]] = [cloth[0]]
        else:
            dic[cloth[1]] = dic[cloth[1]] + [cloth[0]]
            
    for key, val in dic.items():
        result.append(len(val))
    
    temp = 1
    for cloth_kind in result:
        temp *= (cloth_kind + 1)
    answer = temp
    return answer - 1
반응형

관련글 더보기