반응형
문제
https://www.acmicpc.net/problem/9375
코드
import sys
input = sys.stdin.readline
t = int(input())
for i in range(t):
ans = 1
clothes = dict()
n = int(input())
for i in range(n):
_, a = input().split()
if a not in clothes:
clothes[a] = 0
clothes[a] += 1
cnt = list(clothes.values())
for i in cnt:
ans *= i+1
print(ans - 1)
설명
우선 반복값을 입력받아주고 반복 횟수만큼 반복문을 돌려준다.
옷의 종류를 dict로 받아주어 개수를 관리하기 편하게 했다.
이때, 옷의 이름은 크게 중요하지 않으므로 '_'로 입력을 받아주었다.
입력받은 종류가 dict에 없다면 dict에 목록을 생성해 주고,
이미 있다면 값을 1 늘려준다.
그리고 입력받은 밸류만 따로 모아서 리스트로 만들어주었다.
경우의 수를 구하는 방법인데 각 종류의 옷의 개수에 1을 더해주어서 각각 곱해주었다.
이는 옷을 1개씩 고르는 경우와 아무것도 고르지 않은 경우를 포함해 주기 위함이다.
마지막에 정답을 출력할 때, 1을 빼주었는데
이는 아무것도 고르지 않은 경우를 빼주었다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 9656: 돌 게임 2 (0) | 2023.06.21 |
---|---|
[파이썬, Python] 백준 1120: 문자열 (0) | 2023.06.20 |
[파이썬, Python] 백준 2193: 이친수 (0) | 2023.06.14 |
[파이썬, Python] 백준 1735: 분수 합 (0) | 2023.06.13 |
[파이썬, Python] 백준 11652: 카드 (0) | 2023.06.12 |