반응형
문제
17479번 정식당
https://www.acmicpc.net/problem/17479
소스코드
# 특별메뉴는 일반메뉴에서 총 20,000원 이상을 주문해야 주문할 수 있다.
# 서비스메뉴는 일반메뉴와 특별메뉴에서 총 50,000원 이상을 주문해야 주문할 수 있다.
# 서비스메뉴는 단 하나만 주문할 수 있다.
import sys
A, B, C = map(int, sys.stdin.readline().split())
Ar = dict()
Br = dict()
Cr = set()
Am = 0 # 가격 총합
Bm = 0 # 가격 총합
Cc = 0
for i in range(A):
d1, d2 = sys.stdin.readline().split() # 일반메뉴가격
Ar[d1] = int(d2)
for i in range(B):
d1, d2 = sys.stdin.readline().split() # 특별메뉴 가격
Br[d1] = int(d2)
for i in range(C):
Cr.add(sys.stdin.readline().rstrip()) # 스페셜메뉴 종류
n = int(input())
for _ in range(n):
d = input()
if d in Ar:
Am += Ar[d]
elif d in Br:
Bm += Br[d]
elif d in Cr:
Cc += 1
if Cc == 1: # 스페셜 메뉴가 있니?
if Bm + Am >= 50000:
if Bm > 0:
if Am >= 20000:
print('Okay')
else:
print('No')
else:
print('Okay')
else:
print('No')
else:
if Cc > 1:
print('No')
elif Bm > 0: # 이 아래부터는 스페셜 메뉴를 안시킴
if Am >= 20000:
print('Okay')
else:
print('No')
else: # 일반 메뉴만 시킨경우
print('Okay')
딕셔너리와 집합의 특성을 사용할 수 있는 문제입니다.
조건 분기를 연습할 수 있는 문제입니다.
반응형
'Programming > 알고리즘' 카테고리의 다른 글
[백준 / Python] 17504번 제리와 톰 2 (0) | 2023.12.25 |
---|---|
[백준 / Python] 30457번 단체줄넘기 (0) | 2023.12.17 |
[백준 / Python] 2740번 행렬 곱셈 (0) | 2023.11.09 |
[백준 / Python] 1213번 팬린드롬 만들기 (0) | 2023.10.19 |
[백준 / Python] 1431번 시리얼 번호 (1) | 2023.10.05 |
댓글