본문 바로가기

Algorithm

[Algorithm] 프로그래머스 위장 python

반응형

https://programmers.co.kr/learn/courses/30/lessons/42578

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

풀이

  • clothes의 종류를 key로, 종류에 해당하는 옷의 개수를 value로 딕셔너리에 넣는다.
  • 옷을 선택하는 조합을 계산한다. (조합 식을 알면 간단한데, 모르면 어려움)

 

예시

예제 1의 딕셔너리 형태는 { headgear: 2, eyewear: 1 } 이다.

이때 각각의 옷의 종류에서 선택할 수 있는 경우의 수는,

  • headgear -> 0개, 1개, 2개
  • eyewear -> 0개, 1개

따라서 옷을 선택하는 모든 경우의 수는 3 * 2 = 6 이고, headgear 0개, eyewear 0개를 선택하는 경우(아무것도 선택하지 않는 경우)를 빼야 하므로 6 - 1 = 5가 답이 된다.

 

 

소스코드

def solution(clothes):
    answer = 1
    
    #구조화
    clothesCnt = {}
    for c in clothes:
        cur = c[1]
        if cur in clothesCnt:
            clothesCnt[cur] += 1
        else:
            clothesCnt[cur] = 1
    
    #조합 계산
    for val in clothesCnt.values():
        answer *= val + 1
    
    return answer - 1
반응형