9375번 - 패션왕 신해빈

의혁·2025년 1월 4일
0

[Algorithm] 알고리즘

목록 보기
10/50

💡 반례를 잘 찾는 연습이 필요할 것 같다!!

T = int(input())

for _ in range(T):
    
    n = int(input())
    
    clothes = dict()
    
    for i in range(n):
        
        name, kind = input().split(' ')
        
        clothes[kind] = clothes.get(kind, 0) + 1

    num = list(clothes.values())
    totalCase = 1
    
    # 0을 포함해서 생각하기
    for j in num:
        totalCase *= (j+1)
        
    print(totalCase-1)
  • 사실 그렇게 어려웠던 문제는 아닌거 같다.
  • dictionary로 선언하고, 의상의 종류는 key로 value는 의상의 이름이 아닌 갯수로 두고, 경우의 수를 계산하였다.

풀이 방법
1. (각 종류별 의상 갯수)들의 곱 + n(각 의상만 입는 경우)(틀림)
2. (각 종류별 의상 갯수 + 1)들의 곱 - 1(모두가 아무것도 안입는 경우) (맞음)

1번의 경우 반례

n = 3
hat A
sunglasses = B
pant = C

=> 이런 경우에 1번으로 풀이하면 1x1x1 + 3로 4가 나오지만, 사실 답은 7이다.
=> 2번에 적용하면 2x2x2 -1 로 7에 맞게 나온다.

profile
매일매일 차근차근 나아가보는 개발일기

0개의 댓글