본문 바로가기
백준 풀이

[백준/BOJ] - 9375번 python 풀이 - dict

by 반오십 코린이 2023. 4. 12.
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