https://www.acmicpc.net/problem/9375
9375번: 패션왕 신해빈
첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.
www.acmicpc.net
간단한 경우의 수 문제. 각 카테고리의 옷들에 대해서 경우의 수를 따져주면 되는데, 모든 옷을 따로 입는 게 아닌 동시에 입는 것이기 때문에 곱의 법칙을 이용해야 한다.
다만 그냥 곱하는 건 안 되고, 해당 카테고리의 옷을 입을 수도 안 입을 수도 있기 때문에 각 카테고리마다 +1을 해준 값을 곱하고, 문제에서 알몸이 아닌 경우를 뽑아야 되기 때문에 전체 경우의 수에서 아무것도 입지 않은 경우 -1 를 해주면 된다.
import math
def combination(n, r):
return int(math.factorial(n) // (math.factorial(n - r) * math.factorial(r)))
n = int(input())
for i in range(n):
d = {}
res = 1
m = int(input())
for j in range(m):
item, category = input().split()
if d.get(category) == None:
d[category] = 1
else:
d[category] += 1
for i in d.keys():
res *= (d[i] + 1)
print(res - 1)
딕셔너리를 이용해서 각 요소를 카운트하고, 반복문을 돌면서 모든 경우의 수 + 1 을 곱해줬다.
마지막에는 -1을 통해서 마무리.
'Algorithms' 카테고리의 다른 글
| 백준 2004. 조합 0의 개수 (0) | 2022.06.15 |
|---|---|
| 백준 1676. 팩토리얼 0의 개수 (0) | 2022.06.14 |
| 백준 1010. 다리 놓기 (0) | 2022.06.12 |
| 백준 11051. 이항 계수 2 (0) | 2022.06.11 |
| 백준 11050. 이항 계수 1 (0) | 2022.06.10 |
댓글