

이 문제는 학원 다녔을 때 solved에서 풀기로 한 문제였는데... 그때 프로젝트를 하느라 못 풀었던 문제였다.
처음에는 그냥 딱 보고 하나씩 비교해 가면서 풀려고 했는데 뭔가 그렇게 푸는게 아닌거 같았다. 그래서 알고리즘 분류를 봤더니 조합론이었고, 어떻게 풀면 좋을까 고민을 하다가 일단 해빈이는 적어도 1개만 걸치면 나갈 수 있으니까, 옷을 입는 모든 경우의 수에서 아무것도 안 입는 경우의 수를 빼서 계산하면 될거 같다는 생각을 했다.
그리고 옷의 각각의 종류에 대해 (상의 개수 + 1(상의를 안 입는 경우)) * (하의 개수 + 1(하의를 안 입는 경우)) 이렇게 계산을 하고 아무것도 안입는 경우의 수 -1을 하면 된다.
T = int(input())
for _ in range(T):
result = 1
n = int(input())
clothes = dict()
for _ in range(n):
# 딕셔너리에 key를 옷의 종류로 정한다.
name, type = input().split()
# 옷이 이미 있는 종류이면 key에 해당하는 값에 +1 해주고 아니라면 새롭게 key를 추가
if not type in clothes:
clothes[type] = 1
else:
clothes[type] += 1
for i in clothes:
result *= (clothes[i] + 1)
print(result - 1)
생각을 해야하는 문제가 너무 귀찮다...