0개 또는 1개를 뽑는 경우의 수를 구하자
import sys
sys.stdin = open('input.txt')
def get_result(dic):
global cnt
for i in dic: # 각각 종류에서 1개 또는 0개를 고르는 경우의 수
cnt *= len(dic[i])+1
print(cnt-1) # 모든 종류의 옷을 0개씩 고른 경우를 제외
T = int(input())
for tc in range(T):
N = int(input())
dic = {}
cnt = 1
for _ in range(N): # 주어진 input 중 옷의 종류가 dictionary에 없으면 key에 추가, 있으면 해당 키에 value 추가
value, idx = input().split()
if idx in dic:
dic[idx] += [value]
else:
dic[idx] = [value]
get_result(dic)
처음에는 딕셔너리 각각의 value 길이를 for 문으로 중첩해서 돌면서 cnt += 1 해주고 마지막 cnt -= 1 을 해주려고 했다. 하지만 아무리 생각해보아도 key의 갯수가 정해지지 않은 상태에서 for 문을 key의 갯수에 맞춰서 자동으로 중첩해서 생성되게 하는 방법을 찾지 못했다. 그래서 그러면 for 문을 중첩하며 count 할 때 어떤 규칙이 있을까르 고민하다가 각 key의 길이에 +1씩 더해줘서 곱해주면 이것이 for문 중첩과 동일하다는 것을 생각했다.(너무나 당연한 얘기..ㅜ)
으으.. 멘탈 잡고 열심히 하자..