https://www.acmicpc.net/problem/9375

그냥 구글링해서 힌트를 봐버렸다.
처음 내 아이디어는 조합을 이용해서, 1부터 타입 개수만큼, 조합을 더하는 방법이었다.
근데 그랬더니 너무너무 복잡해지고 계산이 안되기 시작해서 찾아봤더니
(a 옷 종류 수 + 1) (b 옷 종류 수 + 1) (c 옷 종류 수 + 1) ... - 1 (알몸인 상태 제거)
이렇게 간단할 수가. 나는 왜 더하기 일을 생각하지 못했을까. 그 종류의 의상을 착용하지 않을 경우가 포함되어 있기에 +1 을 해줘야하는 것이다.
t = int(input())
for _ in range(t):
data = []
n = int(input())
for _ in range(n):
data.append(list(map(str, input().split())))
clothes_type = {} # {'headgear': 3, 'eyewear': 2}
for i in data:
if i[1] in clothes_type:
clothes_type[i[1]] += 1
else:
# 입거나 안입거나 2가지 경우의 수
clothes_type[i[1]] = 2
answer = 1
for i in clothes_type:
answer *= clothes_type[i]
# 알몸인 상태 제거
answer -= 1
print(answer)