감자튀김 공장🍟

[백준/9375] 패션왕 신해빈 (with 파이썬) 본문

Algorithm/BOJ

[백준/9375] 패션왕 신해빈 (with 파이썬)

Potato potage 2022. 12. 23. 13:38
반응형

✔ 문제


풀이

import sys
input = sys.stdin.readline

t = int(input())

for _ in range(t):
    n = int(input())
    dic = {}

    for _ in range(n):
        cloth, category = input().split()
        if category in dic.keys():
            dic[category] += 1
        else:
            dic[category] = 1

    res = 1
    for key in dic:
        res *= (dic[key] + 1)
    print(res - 1)

 설명

조합론 문제이다.

옷의 종류 별로 분류를 하여 (a 종류의 옷 개수 + 1) * (b 종류의 옷 개수 + 1) * ... - 1 (알몸인 경우) 와 같은 식을 세울 수 있다.

딕셔너리를 사용하여 해당 key값에 옷의 종류를 value 값에는 key 종류의 옷 개수를 주어 위의 공식과 같이 계산했다.

 


후기

🔥 문제의 코드

    for _ in range(n):
        cloth, category = map(str, input().split())
        if category in dic:
            dic[category] += cloth
        else:
            dic[category] = cloth

결과

{'headgear': 'hatturban', 'eyewear': 'sunglasses'}
{'face': 'masksunglassesmakeup'}

 

딕셔너리 사용해야지! 라는 생각에 시도했다가 장렬하게 실패했다 (〃⌒▽⌒〃)ゝ 

cloth을 리스트 형식으로 추가하고 싶었는데 이렇게 사용할거면 defaultdict를 사용해야하는 것 같다.

굳이 개수만 세도 되기 때문에 dic[key] += 1 만 해도 되는건데 이상한 부분에 꽂혀서 시간만 더 날렸다.

조합론인건 알았는데 공식을 다르게 세워서 어버버버 하다가 결국 구글링해서 공식을 보고 풀었다. 

반응형
Comments