[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)