알고리즘

[백준] 9375번 (python 파이썬)

changha. 2022. 7. 3. 22:47
from collections import Counter

t = int(input())
for _ in range(t):
    n = int(input())
    arr = []
    for i in range(n):
        a, b = input().split()
        arr.append(b)
    res = Counter(arr)
    num = 1
    for k in res: # res = { headgear : 2 , eyewear : 1 } , { face : 3 } 
        num *= res[k] + 1 
    print(num - 1)

첫번째 경우의 규칙을 살펴 보면

(hat, sunglasses) (turban, sunglasses) (hat) (turban) (sunglasses)

5가지

headgear : 2

eyewear : 1

하나씩만 입을 수도 있으므로 

공식 : (의상 종류 + 1) * (의상 종류 + 1) - 1

 

+1 하는 이유는 안 입을 수도 있으므로 곱할 때 더해준다 

그래서 제일 마지막에 아예 안입은 경우를 -1 해준다

 

'알고리즘' 카테고리의 다른 글

[백준] 11727번 (python 파이썬)  (0) 2022.07.06
[백준] 9461번 (python 파이썬)  (0) 2022.07.05
[백준] 17219번 (python 파이썬)  (0) 2022.07.03
[백준] 1003번(python 파이썬)  (0) 2022.06.29
[백준] 1436번(python 파이썬)  (0) 2022.06.26