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

2021. 6. 28. 14:11백준 알고리즘

문제

https://www.acmicpc.net/problem/9375

 

9375번: 패션왕 신해빈

첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로   (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.

www.acmicpc.net

풀이

해시 테이블 자료구조를 사용합니다.

의상의 종류를 key로 의상의 이름을 입력받을 때마다 value(의상의 갯수)값을 1씩 더합니다.

의상의 종류별로 의상을 착용하지 않는 경우까지 더해서 (value + 1)를 모두 곱하고, 최종 결과에 아무것도 안 입은 경우(1)를 빼서 answer를 구합니다.

ex) answer = (headgear의 의상 갯수 + 1)(eyewear의 의상 갯수 + 1) - 1

코드

import sys

t = int(sys.stdin.readline().rstrip())  # 테스트 갯수
for _ in range(t):
    n = int(sys.stdin.readline().rstrip())
    cloth = dict()  # 해시
    for _ in range(n):
        cloth_name, kind = sys.stdin.readline().rstrip().split()  # 의상 이름, 종류
        if kind not in cloth:
            cloth[kind] = 1
            continue
        cloth[kind] += 1
    cloth_counts = cloth.values()  # 종류별 의상 갯수
    answer = 1
    for i in cloth_counts:
        answer *= (i + 1)
    print(answer - 1)  # 아무것도 안입은 경우를 뺌