백준 - 9375

KangMyungJoe·2023년 8월 31일
0

algorithm

목록 보기
41/55

문제 설명

입력으로 옷과 옷의 종류가 주어지고, 동일한 종류의 옷은 동시에 입지 못한다고 할 때, 가능한 모든 경우의 수를 구하는 문제다.


접근 방법

  1. 옷을 종류별로 구분하기 위해 딕셔너리 자료형을 사용
  2. 딕셔너리에 옷의 개수가 저장되면, 가능한 모든 경우의 수를 계산
  3. 동일한 종류의 옷은 입을 수 없고, 입지 않은 경우도 존재하기 때문에 투명 옷의 개념을 생각
  4. 예를 들어 모자 3개, 상의 2개, 하의 2개인 경우 모자를 쓰지 않는 경우, 상의를 입지 않는 경우, 하의를 입지 않는 경우를 고려하여 4x3x3을 수행한 뒤, 모두 입지 않는 경우를 생각해 1을 빼준다.

작성한 코드

import sys

input = sys.stdin.readline

test_case = int(input())

for i in range(test_case):
    case = int(input())
    num = {}
    result = 1
    
    for j in range(case):
    
        name, wear = input().split()

        if wear in num.keys():	# 딕셔너리에 저장
            num[wear] += 1
        else:
            num[wear] = 1
        
    for i in num.values():
        result = result * (i+1)

    print(result-1)
profile
소통을 잘하는 개발자가 되고 싶습니다.

0개의 댓글