cmod.ify
[9375] 패션왕 신해빈 본문
728x90
반응형
딕셔너리 문제라는 것을 알았다.
조합이라는 것도 알았는데 문법 측에서 좀 약한 것 같다
dress[kind] = dress.get(kind, 0) + 1
get()함수로 key값을 가져올 수 있으면 가져오고 아니라면 0으로 설정한다.
가져왔다면 1개를 더한다.
경우의 수를 구할 땐
옷 입는 종류를 곱하는 방법으로 생각했는데 제미나이가 다른 방법을 알려줬다.
옷을 안 입는 경우도 하나로 계산하는 방법이다.
ex
상의 : 2벌
하의 : 3벌
이라고 입력을 받았을 때 2*3 으로 계산한 경우 6가지이다
근데 안입는 경우도 생각했을 때 1개씩 더 한다. 2*4 = 12가지인데 이 안에 안입는 공통적인 한가지를 포함하여 모든 경우의 수가 들어있다. 그래서 모든 옷에 1개씩 더하고 마지막 공집합 1을 빼면 된다.
전체에서 꼴 보기 싫은 딱 한 놈만 골라내서 버리는 것이 여집합이다
교집합은 두가지일 땐 쉽지만 세네가지 여러개가 된다면 모두 합한다음에 공통된 항목을 제거하기 어렵기 때문에 여집합을 사용해야 한다.
여사건 (Complementary Event)
우리가 원하는 것은 "적어도 하나의 옷은 입은 상태"
전체 경우의 수에서 우리가 원하지 않는 단 하나의 경우(모두 안 입음)를 빼는 것
- 이 문제에서의 전체 집합(U): {모든 옷 조합 + 아무것도 안 입은 상태}
- 우리가 원하는 집합(A): {적어도 옷을 하나라도 입은 모든 상태}
- 여사건(A^c): {아무것도 입지 않은 상태 - 알몸} (딱 1가지)

import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
n = int(input())
dress = {}
for _ in range(n):
name, kind = input().split()
dress[kind] = dress.get(kind,0) + 1
total = 1
for key in dress:
total *= (dress[key]+1)
print(total-1)
728x90
반응형
'BASIC > 코딩테스트' 카테고리의 다른 글
| [11726] 2×n 타일링 (0) | 2025.12.22 |
|---|---|
| [11659] 구간 합 구하기 4 (0) | 2025.12.22 |
| [9095] 1,2,3 더하기 (0) | 2025.12.22 |
| [2579] 계단 오르기 (0) | 2025.12.19 |
| [1463] 1로 만들기 (0) | 2025.12.19 |