Today
Total
01-07 16:13
관리 메뉴

홍우진의 개발 일기장

[백준] 9375번: 패션왕 신해빈 / 파이썬 본문

알고리즘/백준

[백준] 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
반응형
Comments