패션왕 신해빈
풀이
어떻게 할까 하다가 딕셔너리를 이용하기로 했다.
딕셔너리에 각 옷의 종류별로 key와 value를 받고 value는 리스트로 옷들을 입력했다.
따라서
{'headgear': ['hat', 'turban'], 'eyewear': ['sunglasses']}
{'face': ['mask', 'sunglasses', 'makeup']}
와 같은 형태로 입력된다.
이를 이용해서 풀이를 했다.
- 테스트케이스와 입력받아야 하는 n을 입력받고 이를 이용해서 반복문 실행
- 딕셔너리 생성 후 옷과 옷의 종류를 딕셔너리에 리스트 값으로 입력
- 조합수를 확인하기 위해 딕셔너리의 key를 순회시켜서 각 key의 값의 길이에 안 입는 경우도 포함해서 len(dict [di])+1을 answer에 곱해주기
- 출력 시에는 모두 안 입는 경우를 제외해야 하기에 마지막 answer -1을 출력
이렇게 해서 아래 코드가 나왔다.
import sys
T = int(sys.stdin.readline().strip())
for testcase in range(1, T+1):
n = int(sys.stdin.readline().strip())
# 딕셔너리에 의상 종류별 의상을 입력
dict = {}
for _ in range(n):
a, b = map(str, sys.stdin.readline().split())
# 딕셔너리에 있으면 리스트에 추가
if dict.get(b):
dict[b].append(a)
# 딕셔너리에 없으면 생성
else:
dict[b] = [a]
# 조합을 위해 곱하기를 사용예정
answer = 1
# 딕셔너리의 각 key을 이용해서 value의 길이를 이용해서 answer에 곱해주기
for di in dict:
# +1을 해주는 이유는 안입는 경우도 포함하니까.
answer *= (len(dict[di])+1)
# answer -1인 이유는 모두 안입는 경우는 제외해야하니까.
print(answer - 1)
'알고리즘 > 백준' 카테고리의 다른 글
백준 실버2 1541. 잃어버린 괄호 (python) (0) | 2024.03.03 |
---|---|
백준 골드5 5430. AC (python) (0) | 2024.03.03 |
백준 실버2 1260. DFS와 BFS (python) (0) | 2024.03.03 |
백준 실버1 1074. Z (python) (0) | 2024.03.02 |
백준 실버4 1620. 나는야 포켓몬 마스터 이다솜 (python) (0) | 2024.03.02 |