# 백준 9375 패션왕 신해빈
T = int(input())
for t in range(T):
n = int(input()) # 옷 개수
type = [input().split()[1] for _ in range(n)]
set_type = list(set(type)) # 옷 타입 종류
cloth_dict = {s : type.count(s) for s in set_type} # 옷 타입 별 옷 개수
cnt = 1 # 곱하기를 위해 1로
for i in range(len(set_type)): # 옷 타입 개수만큼 반복
cnt *= cloth_dict[set_type[i]] + 1 # 조합식, +1은 해당 타입의 옷을 안입었을 때도 계산하기 위해
print(cnt-1) # 알옴상태는 제외하기 위해
먼저 조합식을 사용하기 위해서 옷 타입의 개수와, 옷 타입 별로 옷이 몇개 씩 있는지를 구해야 했다.
때문에
type = [input().split()[1] for _ in range(n)]
set_type = list(set(type)) # 옷 타입 종류
으로 옷 타입 종류를 구했고,
cloth_dict = {s : type.count(s) for s in set_type} # 옷 타입 별 옷 개수
으로 옷 타입 별로 옷이 몇개 있는지 딕셔너리로 정리했다.
그리고 옷 조합을 위해 cnt = 1로 지정한 후, 옷 타입 수 만큼 반복문을 돌려 cnt에 (타입 별 옷 개수 + 1)을 곱해줬다.
cnt = 1 # 곱하기를 위해 1로
for i in range(len(set_type)): # 옷 타입 개수만큼 반복
cnt *= cloth_dict[set_type[i]] + 1 # 조합식, +1은 해당 타입의 옷을 안입었을 때도 계산하기 위해
그리고 마지막에 옷을 아예 입지 않았을 경우를 제외하기 위해 cnt - 1값을 출력했다!!