백준 - 패션왕 신해빈

김서영·2024년 7월 22일
0

알고리즘

목록 보기
21/25

📃 문제

💟 코드

# 백준 9375 패션왕 신해빈

T = int(input())

for t in range(T):
    n = int(input()) # 옷 개수
    type = [input().split()[1] for _ in range(n)]
    set_type = list(set(type)) # 옷 타입 종류
    cloth_dict = {s : type.count(s) for s in set_type} # 옷 타입 별 옷 개수

    cnt = 1 # 곱하기를 위해 1로
    for i in range(len(set_type)): # 옷 타입 개수만큼 반복
        cnt *= cloth_dict[set_type[i]] + 1 # 조합식, +1은 해당 타입의 옷을 안입었을 때도 계산하기 위해

    print(cnt-1) # 알옴상태는 제외하기 위해

✨ 코드 풀이

먼저 조합식을 사용하기 위해서 옷 타입의 개수와, 옷 타입 별로 옷이 몇개 씩 있는지를 구해야 했다.
때문에

 type = [input().split()[1] for _ in range(n)]
 set_type = list(set(type)) # 옷 타입 종류

으로 옷 타입 종류를 구했고,

 cloth_dict = {s : type.count(s) for s in set_type} # 옷 타입 별 옷 개수

으로 옷 타입 별로 옷이 몇개 있는지 딕셔너리로 정리했다.

그리고 옷 조합을 위해 cnt = 1로 지정한 후, 옷 타입 수 만큼 반복문을 돌려 cnt에 (타입 별 옷 개수 + 1)을 곱해줬다.

cnt = 1 # 곱하기를 위해 1로
for i in range(len(set_type)): # 옷 타입 개수만큼 반복
    cnt *= cloth_dict[set_type[i]] + 1 # 조합식, +1은 해당 타입의 옷을 안입었을 때도 계산하기 위해

그리고 마지막에 옷을 아예 입지 않았을 경우를 제외하기 위해 cnt - 1값을 출력했다!!

profile
개발과 지식의 성장을 즐기는 개발자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN