[BOJ] 9375 패션왕 신해빈

해시, 수학


해당 문제는 해시 자료구조를 사용하여 정리하면 매우 간단한 문제이다. 우항에 주어진 key들을 이용하여 해당 카테고리에 몇 개의 옷이 해당 카테고리에 있는지 저장한다.

저장을 모두 마친 후에는 각 옷들의 조합을 짜야 하는 문제인데, 각 카테고리에서 1개씩의 옷을 꺼내서 입는 문제이므로 (value)C1 들의 곱으로 구할 수 있다.

문제에서 조건은 알몸으로 나가지 않는 경우이므로, 옷을 걸치지 않는다는 조건까지 더한 후 마지막으로 모든 옷을 고르지 않는 조건을 -1 해주어 아래와 같이 구현할 수 있다.

import sys

def solution(n):
    answer = 1
    for k, v in clothes.items():
        answer *= (v+1)
    return answer - 1

if __name__ == "__main__":
    T = int(sys.stdin.readline().rstrip())
    for _ in range(T):
        N = int(sys.stdin.readline().rstrip())
        clothes = dict()
        for _ in range(N):
            _, key = map(str, sys.stdin.readline().rstrip().split())
            try:
                clothes[key] += 1
            except:
                clothes[key] = 1
        print(solution(N))