CodingTest/Baekjoon

[baekjoon] 백준 9375번(파이썬): 패션왕 신해빈

JunJangE 2021. 10. 3. 12:29

문제

 

9375번: 패션왕 신해빈

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

www.acmicpc.net

알고리즘

- collections 모듈에 Counter 클래스를 사용하여 문제를 수행한다.

- 의상의 이름과 종류를 입력받아 종류를 리스트에 추가한다.

- 의상의 종류를 추가한 리스트에 Counter 함수를 통해 개수를 확인한다.

- 알몸도 옷이라고 생각하여 각 의상의 + 1 을 해준 후 각 의상의 종류를 곱해준다.

- 곱하게 되면 모든 조합이 나오고 이때, 모든 옷의 알몸을 입었을 경우의 수는 하나가 된다.

- 따라서 모든 조합에서 - 1 을 해준 값을 출력한다.

코드

import sys
from collections import Counter


t = int(sys.stdin.readline())

# 테스트 케이스만큼 반복
for _ in range(t):
    n = int(sys.stdin.readline())
    temp = []

    # 의상의 이름과 종류를 입력받는다.
    for i in range(n):
        a, b = map(str, sys.stdin.readline().split())
        temp.append(b) # 의상의 종류를 리스트에 추가

    # 의상의 종류가 들어있는 리스트를 카운터 함수를 통해 개수를 확인한다.
    res = Counter(temp)

    # (의상의 개수 + 1) 을 모든 의상의 종류를 곱한 후 - 1 해준다.
    num = 1
    for j in res:
        num *= (res[j] + 1)

    print(num - 1)

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com