입력으로 옷과 옷의 종류가 주어지고, 동일한 종류의 옷은 동시에 입지 못한다고 할 때, 가능한 모든 경우의 수를 구하는 문제다.
- 옷을 종류별로 구분하기 위해 딕셔너리 자료형을 사용
- 딕셔너리에 옷의 개수가 저장되면, 가능한 모든 경우의 수를 계산
- 동일한 종류의 옷은 입을 수 없고, 입지 않은 경우도 존재하기 때문에 투명 옷의 개념을 생각
- 예를 들어 모자 3개, 상의 2개, 하의 2개인 경우 모자를 쓰지 않는 경우, 상의를 입지 않는 경우, 하의를 입지 않는 경우를 고려하여
4x3x3
을 수행한 뒤, 모두 입지 않는 경우를 생각해 1을 빼준다.
import sys
input = sys.stdin.readline
test_case = int(input())
for i in range(test_case):
case = int(input())
num = {}
result = 1
for j in range(case):
name, wear = input().split()
if wear in num.keys(): # 딕셔너리에 저장
num[wear] += 1
else:
num[wear] = 1
for i in num.values():
result = result * (i+1)
print(result-1)