[Python] 알고리즘/Silver
[17479] 정식당 (Python)
-Becca-
2021. 11. 10. 21:51
[문제]
https://www.acmicpc.net/problem/17479
17479번: 정식당
일반메뉴는 noodle 2개로 20,000원, 특별메뉴는 cutlet 2개와 friedrice 1개로 32,000원, 둘이 합쳐 52,000원으로 서비스메뉴 하나를 주문할 수 있다.
www.acmicpc.net
알고리즘 분류는 자료 구조, 해시를 사용한 집합과 맵 입니다.
메뉴와 메뉴의 가격을 dict()에 저장하고, 나중에 조건을 적용하여 문제를 풉니다.
서비스메뉴를 반드시 주문하는 것이 아닙니다.
[코드]
import sys
A, B, C = map(int, sys.stdin.readline().split())
dt_A = dict()
dt_B = dict()
li_C = list()
for i in range(A):
menu = sys.stdin.readline().split()
dt_A[menu[0]] = int(menu[1])
for i in range(B):
menu = sys.stdin.readline().split()
dt_B[menu[0]] = int(menu[1])
for i in range(C):
li_C.append(sys.stdin.readline().rstrip())
N = int(sys.stdin.readline())
A_price = 0
B_price = 0
B_cnt = 0
C_cnt = 0
for i in range(N):
menu = sys.stdin.readline().rstrip()
if menu in dt_A.keys():
A_price += dt_A[menu]
elif menu in dt_B.keys():
B_price += dt_B[menu]
B_cnt += 1
else:
C_cnt += 1
res = "Okay"
if A_price < 20000 and B_cnt > 0:
res = "No"
else:
if A_price + B_price < 50000 and C_cnt > 0:
res = "No"
elif C_cnt > 1:
res = "No"
print(res)