9375: 패션왕 신해빈 - Python

beaver.zip·2025년 2월 1일
0

[알고리즘] 백준

목록 보기
53/54

문제

https://www.acmicpc.net/problem/9375

풀이 (defaultdict)

from collections import defaultdict

t = int(input())
for _ in range(t):
    n = int(input())
    closet = defaultdict(list) # KeyError 방지

    for _ in range(n): # 의상과 종류를 closet에 저장
        name, type = input().split()
        closet[type].append(name)

    cnt = 1
    for key in closet.keys(): # for key in closet과 동일
        cnt *= len(closet[key]) + 1 # 각 종류의 개수 + 1(해당 종류를 입지 않는 경우)
    
    print(cnt - 1) # 모든 종류를 입지 않는 경우 제외
  • 문제의 포인트는 다음 2가지인 것 같다.
    1) 의상과 종류를 dictionary에 어떻게 넣을 것인가
    2) 조합 수를 어떻게 구할 것인가
  • dictionary에 넣는 것은 defaultdict로 쉽게 구현했다.
  • 다만 조합 수를 구하는 아이디어가 생각나지 않았고, 이 글을 참고했다.

오늘의 교훈

  • collections.defaultdict를 사용하면 KeyError를 방지할 수 있다.
  • for i in dictionary에서, ikey이다.

deafultdict 간단 소개

from collections import defaultdict

int_dict = defaultdict(int) # 디폴트값이 int인 딕셔너리 선언 (str, list, set 등도 가능)

print(int_dict) # defaultdict(<class 'int'>, {})
print(int_dict['a']) # 0
print(int_dict) # # defaultdict(<class 'int'>, {'a': 0})

참고 자료

profile
NLP 일짱이 되겠다.

0개의 댓글

관련 채용 정보