[프로그래머스] 해시 Level2 위장
문제
의상들이 담긴 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
댓글남기기