728x90
result 값이 어떻게 도출되는지 알아야한다.
카테고리 별로 아이템이 몇가지 있는지 확인하고
카테고리가 A,B 2가지 있다고 가정하면
result = (A카테고리 아이템의 수 + 1) * (B카테고리 아이템의 수) -1이 된다.
조합을 생각하는 문제이므로 해당 카테고리의 아이템을 착용하지 않았을 때와 각각 착용했을 때의 경우의 수는
(해당 카테고리의 아이템의 수 + 1)이다.
추가적으로 다른 카테고리의 아이템과 동시에 착용할 수 있으므로 곱연산을 진행한다.
다만, 모든 카테고리의 아이템을 사용하지 않을 경우까지 계산이 되기 때문에 해당 경우를 제거해야한다.(1을 빼주는 이유)
카테고리 별로 값을 저장시켜야하므로
딕셔너리를 사용하여 values 부분에 set 자료형을 사용하면 간단하게 풀리는 문제이다.
import sys
input = sys.stdin.readline
T = int(input())
for _ in range(T):
result = 1
dic = {}
n = int(input())
for _ in range(n):
a,b = map(str,input().split()) # 디테일, 종류
if b not in dic.keys():
dic[b] = set()
dic[b].add(a)
else:
dic[b].add(a)
for i in dic.keys():
result *= (len(dic[i])+1)
print(result-1)
728x90
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 11659번 python 풀이 - dp (0) | 2023.04.17 |
---|---|
[백준/BOJ] - 1620번 python 풀이 - dict (0) | 2023.04.14 |
[백준/BOJ] - 9205번 python 풀이 - bfs (0) | 2023.04.05 |
[백준/BOJ] - 1240번 python 풀이 - bfs (0) | 2023.04.04 |
[백준/BOJ] - 6118번 python 풀이 - bfs (0) | 2023.04.03 |