[프로그래머스] 해시 Level2 위장

최대 1 분 소요

문제

의상들이 담긴 2차원 리스트가 주어질 때, 서로 다른 옷의 조합의 수를 return 하는 soultion 함수를 작성하라.

어떻게 풀 것인가?

키(Key)를 의상의 종류, 값(Value)을 이 종류에 속한 의상의 수로 하는 딕셔너리 자료형을 사용한다. 예를 들어, {‘headgear’ : 2, ‘eyewear’ : 2} 로 딕셔너리를 만든다.

딕셔너리에서 키는 고유한 값이므로 중복되는 키 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다. 이 특징을 이용하여 의상의 종류에 속한 의상의 수를 센다. 서로 다른 옷의 조합의 수는 아래의 식을 통해 구한다.

두 종류의 의상이 주어졌다고 가정하면,

정답 = {(첫 번째 종류에 속한 의상의 수) + 1} * {(두 번째 종류에 속한 의상의 수) + 1} - 1

위 식을 풀어 쓰면 다음과 같다.

정답 = {(첫 번째 종류에 속한 의상의 수) + 1 (첫 번째 종류에 속한 의상을 안 입는 경우)} * {(두 번째 종류에 속한 의상의 수) + 1 (두 번째 종류에 속한 의상을 안 입는 경우)} - 1 (두 종류의 의상을 모두 안 입는 경우)

def solution(clothes):
    data = dict()
    answer = 1

    for c in clothes:
        data[c[1]] = 0

    for c in clothes:
        data[c[1]] += 1

    value_list = list(data.values())
    for v in value_list:
        answer *= (v + 1)
    answer -= 1
    return answer

카테고리:

업데이트:

댓글남기기