알고리즘/백준
[백준] 9375번: 패션왕 신해빈 / 파이썬
홍우진
2025. 1. 1. 20:19
728x90
반응형
문제 링크
https://www.acmicpc.net/problem/9375
풀이 코드
t = int(input())
for _ in range(t):
n = int(input())
wear = {}
for i in range(n):
a,b = input().split() #값을 이름과 종류로 나눈다.
if b not in wear: #종류가 딕셔너리에 없다면
wear[b] = 1 #종류를 추가한다.
else: #만약 있다면 키값을 1 더한다.
wear[b] += 1
a = 1
for i in wear:
a *= wear[i]+1 #(x 개수 + 1) * (y 개수 + 1) ... * (z 개수 + 1)
print(a-1)
코드 해석
다음과 같은 규칙을 찾을 수 있다.
경우의 수 = (x종류의 개수 + 1) * (y종류의 개수 + 1) ... * (z종류의 개수 + 1) - 1
의상을 착용해도 되고 안해도 되기 때문에
각 종류의 개수에 +1을 해주고,
모든 의상을 착용하지 않은 경우를 제외시켜줘야 하기 때문에
마지막에 -1을 하면 총 경우의 수가 도출된다.
딕셔너리를 이용하여 종류를 key에 저장하고 그 종류가 나온 개수를 카운팅 하여 value에 저장한다.
그 후 규칙에 맞춰 계산하고
출력 시 -1을 한 뒤 출력한다.
코드는 할 만 했지만 규칙을 찾기가 헷갈렸다.
난이도: ★★★☆☆
728x90
반응형