Koala - 13기/코딩테스트 준비 스터디

[백준/Python] 9375번 패션왕 신해빈

Langerak 2024. 2. 18. 00:16

문제

해설

처음에 모든 경우의 수를 검사하는 코드를 작성했는데, 시간초과가 난 문제이다.

모든 경우의 수를 검사하지 말고

각 의상의 종류에 아무것도 입지 않을 경우 1을 더하고,

각 의상의 종류 가짓수를 곱해주고, 아무것도 입지 않을 경우 1을 빼준다.

코드

import sys
input = sys.stdin.readline

def main():
    for _ in range(int(input().strip())):
        dic = {}
        ans = 1
        for _ in range(int(input().strip())):
            _, t = map(str, input().split())
            dic[t] = dic[t] + 1 if t in dic else 2
        for i in dic:
            ans *= dic[i]
        print(ans - 1)

if __name__ == "__main__":
    main()