본문 바로가기

카테고리 없음

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

반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/42578?language=python3 

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

해결

 

def solution(clothes):
    classificate = {}

    # 의상 타입별 개수 구하기
    for clothe in clothes:
        if clothe[1] in classificate:
            classificate[clothe[1]] += 1
        else:
            classificate[clothe[1]] = 1

    # 조합의 수 구하기
    answer = 1 
    for key in classificate.keys():
        answer *= (classificate[key]+1)
    
    # 아무것도 안입는 경우 제외
    return answer -1 

 

풀이 과정

만약 의상의 종류가 A, B, C가 있고 각각 2, 3, 4개의 아이템이 있다고 생각해보자.

일단 의상의 종류 A에서 하나를 선택하거나 선택하지 않을 수 있다. 

B, C도 마찬가지다. 

 

즉 (A의 갯수 + 1) * (B의 갯수 + 1) * (C의 갯수 +1)을 하면 조합을 구할 수 있다.

하지만 아무것도 입지 않는 경우 1은 제외해야 한다.

 

 

중간에 생각했다가 포기한 풀이 과정

 

A에 총 2가지

B에 총 3가지

C에 총 4가지

의 의상이 있을때

 

아래와 같은 공식으로도 구할 수 있다.

 

(2+3+4) + (2*3 + 2*4 + 3*4) + (2*3*4)

 

이를 코드화 하고 싶었는데 어떻게 해야할지 막막했다.

조합을 구하는 방법에 대해서 좀 더 알아봐야 겠다.

 

 

 

 

반응형