장경훈 2022. 7. 13. 11:21
[LV2]위장 문제링크
스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다.
예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입

www.programmer.co.kr

 

문제 해설

 

이 문제는 같은 종류의 물건들을 제외한 조합 경우의수를 생각해보면 되는데 우선 같은 종류의 옷을 딕셔너리에 정리한 후 

경우의수 구하는 공식인 *(n+1)을 해주면 모든 경우의 수가 나오게 된다. 여기서 마지막 -1은 아무 옷도 안입고 있을때를 의미한다. 

def solution(clothes):
    answer = 1
    match={} #옷의 종류와 이름을 저장할 딕셔너리
    for value,key in clothes: #딕셔너리에 옷의 종류와 이름 정리
        if key in match:
            match[key].append(value)
        else:
            match[key]=[value]
        
    for key in match.keys(): #각각의 옷이 몇개있는지 확인하여 경우의수 계산
        answer*=(len(match[key])+1)
    answer-=1 #아무것도 안입는 경우를 제외
    return answer

 

Key point

 

  • 경우의수 구하는 공식인 *(n+1)을 떠올릴 수 있어야 한다.
  • 딕셔너리를 사용하여 종류에 따른 옷을 분류할 수 있어야 한다