1223v

[프로그래머스] Lv.1 의상 본문

PS

[프로그래머스] Lv.1 의상

1223v 2023. 8. 3. 04:46

문제 설명 및 제한사항

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

 

아이디어 및 해결 방법

우선 경우의 수는 

모자 2

안경 1 일경우,

모자_1 : 1

모자_2 : 1

안경 1 : 1

모자 1 + 안경 1 : 1

모자 1 + 안경 1 : 1

 

이런식으로 총 5개의 경우의 수가 나온다.

무조건 1개씩은 입는다 했으니 

 ( N+1 * M +1 ) 꼴이 된다.

그렇다면 우선  defaultdict로 옷의 두번째 요소인 타입이 같은 요소가 있는지 찾는다.

최종적으로 같은 타입의 요소가 몇개있는지 세고,

 

그 타입에 따른 갯수에 +1(안입는경우)를 해준뒤 모든 경우의 수를 곱하고 마지막에 아무것도 안입는 경우를 빼면 

답이 나온다.

 

 

 

입출력 예

[["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]] 5

 

코드

from collections import defaultdict

def solution(clothes):

    dic = defaultdict(int)
    for cloth in clothes:
        cloth_type = cloth[1]
        dic[cloth_type] += 1

    answer = 1
    for type in dic.keys():
        answer *= (dic[type] + 1) # 옷을 안고른 경우
    answer -= 1 #어떤 종류의 옷도 선택하지 않는 경우
    return answer





clothes = [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]
answer = solution(clothes)
print(answer)

 

출처

728x90