패션왕 신해빈

yongju·2022년 12월 13일
0

BAEKJOON

목록 보기
39/40

❓문제

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

❗문제 정리

  • 옷입는 경우의 수 구하기 = (a의 종류수+1)(ㅠ의 종류수+1)... *(z의 종류수+1)
  • +1을 하는 이유는 해당 종류의 옷을 입지 않는 경우를 고려하기 위함.
  • -1을 하는 이유는 문제에서 알몸으로 돌아다니지 않는다고 하였으므로 모두 다 입지 않는 경우를 제외.

📑코드

from collections import defaultdict
#종류를 키값으로 두기
t=int(input())#테스트 케이스 수
for _ in range(t):
  n=int(input())#의상 수

  lst=[]
  for _ in range(n):#데이터 받기
    name, kind=input().split()
    lst.append((kind, name))

	 data=defaultdict(list)#인수를 list로 설정해야 리스트에 있는 값을 빼와서 dict만들 수있음
  for key, value in lst:#딕셔너리로 만들기
    data[key].append(value)

  day=1
  for key in data:
    day*=(len(data[key])+1)# (a종류수+1)*(b종류수+1)입지 않아도 되는 경우의 +1
  print(day-1)#의상 무조건 입어야하니까 아무것도 안입는 경우의수 뺴주기

📝코드 설명

from collections import defaultdict
#종류를 키값으로 두기
t=int(input())#테스트 케이스 수
for _ in range(t):
  n=int(input())#의상 수
  
  lst=[]
  for _ in range(n):#데이터 받기
    name, kind=input().split()
    lst.append((kind, name))

딕셔너리를 만들어 주기 위해 defaultdict를 임포트 해준다.
테스트 케이스 수t, 의상수n, 의상 이름 name, 의상 종류 kind를 입력받는다.

data=defaultdict(list)#인수를 list로 설정해야 리스트에 있는 값을 빼와서 dict만들 수있음
  for key, value in lst:#딕셔너리로 만들기
    data[key].append(value)

받은 경우의 수를 딕셔너리로 만든다.

day=1
  for key in data:
    day*=(len(data[key])+1)# (a종류수+1)*(b종류수+1)입지 않아도 되는 경우의 +1
  print(day-1)#의상 무조건 입어야하니까 아무것도 안입는 경우의수 뺴주기
  • 옷입는 경우의 수 구하기 = (a의 종류수+1)(ㅠ의 종류수+1)... *(z의 종류수+1)
  • +1을 하는 이유는 해당 종류의 옷을 입지 않는 경우를 고려하기 위함.
  • -1을 하는 이유는 문제에서 알몸으로 돌아다니지 않는다고 하였으므로 모두 다 입지 않는 경우를 제외.

🎖제출 결과

💡insight

profile
AI dev

0개의 댓글