티스토리 뷰
https://www.acmicpc.net/problem/9375
9375번: 패션왕 신해빈
첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.
www.acmicpc.net


👩💻문제 이해
예시 입력에 나온
hat headgear
sunglasses eyewear
turban headgear
이 세 가지의 의상으로 나올 수 있는 경우의 수를 생각해보면
(hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.
headgear : 2가지, eyewear : 1가지이므로
같은 종류의 의상은 1개만 입을 수 있기 때문에 전체 경우의 수는 (2+1) * (1+1) = 6가지 이다.
하지만 알몸인 경우는 빼주어야 하기 때문에 -1를 해주면 총 5가지가 된다.
👩💻색깔과 모양이 다른 경우의 수 사용 + dictionary : 성공🌈
n = int(input())
for i in range(n):
res = 1
num = int(input())
dic = {}
for i in range(num):
thing, sort = input().split()
if sort in list(dic.keys()) :
count = dic[sort]
count += 1
dic[sort] = count
else :
count = 1
dic[sort] = count
jli =[]
for i,j in dic.items():
jli.append(j)
for i in range(len(jli)):
res *= (jli[i] + 1)
print(res-1)
n = int(input())
# 테스트 케이스 입력 받기
for i in range(n):
res = 1
num = int(input())
# 의상 수 입력받기
dic = {}
for i in range(num):
thing, sort = input().split()
# 의상 이름과 의상 종류 입력받기
if sort in list(dic.keys()) :
count = dic[sort]
count += 1
dic[sort] = count
# dic -> { 의상 종류 : 개수 }
else :
count = 1
dic[sort] = count
jli =[]
# jli : 개수만 뽑은 list
for i,j in dic.items():
jli.append(j)
for i in range(len(jli)):
res *= (jli[i] + 1)
# 색깔과 모양이 서로 다른 도형을 뽑는 경우의 수 사용
print(res-1)
# 알몸 경우 빼주기
🚀결과🚀

✨Point✨
색깔과 종류가 모두 다른 도형을 뽑는 경우의 수
(단, 같은 도형의 종류는 한 가지만 뽑을 수 있다.)
ex) 🔴, 🔵, 🟡, 🔺, 🟦, 🟩
-> (3+1) * (1+1) * (2+1) -1 = 23가지
'🦖 Programming > Python' 카테고리의 다른 글
[Python] 백준 알고리즘 2231번 : 분해합 (0) | 2022.09.07 |
---|---|
[Python] 백준 알고리즘 2798번 : 블랙잭 (0) | 2022.09.07 |
[Python] 백준 알고리즘 14425번 : 문자열 집합 (0) | 2022.09.03 |
[Python] 백준 알고리즘 1159번 : 농구 경기 (0) | 2022.09.01 |
[Python] 백준 알고리즘 17478번 : 재귀함수가 뭔가요? (0) | 2022.09.01 |
댓글