[Silver III] 정식당 - 17479
분류
자료 구조, 해시를 사용한 집합과 맵
문제 설명
2019년 1학기가 시작되고 많은 사람을 만나며 밥과 술에 탕진을 해버린 영기는 2학기에 탕진할 돈을 마련하기 위해 중앙대 근처의 고급 레스토랑, "정식당"에서 알바를 하게 되었다.
정식당의 사장 정우는 새로 들어온 알바생 영기를 위해 정식당만의 특별한 음식 주문법을 알려주려고 한다.
정식당에는 다양한 메뉴들이 있지만 크게 3가지로 나눌 수 있는데 A개의 "일반메뉴", B개의 "특별메뉴", C개의 "서비스메뉴"로 나뉘어져 있다. 일반메뉴는 자유롭게 주문할 수 있으나 특별메뉴와 서비스메뉴는 주문할 때 다음의 제약이 있다.
- 특별메뉴는 일반메뉴에서 총 20,000원 이상을 주문해야 주문할 수 있다.
- 서비스메뉴는 일반메뉴와 특별메뉴에서 총 50,000원 이상을 주문해야 주문할 수 있다.
- 서비스메뉴는 단 하나만 주문할 수 있다.
다양한 메뉴와 특별한 메뉴 주문법에 영기는 알바를 하면서 혼돈이 오기 시작했다. 받아서는 안될 주문을 받기도 하며 사장님에게 된통 혼나기도 하며 심지어는 자기 발에 걸려 넘어지기까지 했다.
가게를 찾아온 손님들이 주문하는 것이 옳은 주문인지 아닌지 헷갈려하는 영기는 우리에게 도움을 요청했다. 영기가 주문을 잘 받아올 수 있도록 우리가 도와주자.
입력
첫째 줄에 50,000 이하의 양의 정수 A, B, C가 공백을 두고 주어진다.
두번째 줄부터 A줄에 걸쳐 일반메뉴의 이름과 가격이 공백을 두고 주어진다. 그 다음 B줄에 걸쳐 특별메뉴의 이름과 가격이 공백을 두고 주어진다. 그 다음 C줄에 걸쳐 서비스메뉴의 이름이 주어진다.
그 다음 줄에서 손님이 주문하는 음식의 수를 나타내는 150,000 이하의 자연수 N이 주어진다.
그 다음 N줄에 걸쳐 손님이 주문하는 음식의 이름들이 주어진다. 같은 음식을 여러번 주문할 수도 있으며 메뉴에 있는 음식만 주문한다.
일반메뉴와 스페셜메뉴의 가격은 1,000,000 이하의 양의 정수이며 메뉴의 이름은 20자 이하의 알파벳 소문자로만 이루어져 있으며 일반메뉴, 특별메뉴, 그리고 서비스메뉴들의 이름은 모두 다르다
출력
영기가 받은 주문이 옳은 주문이면 "Okay"를, 그렇지 않은 주문이라면 "No"를 출력하자. 따옴표는 출력하지 않는다.
import sys
input = sys.stdin.readline
A, B, C = map(int, input().split())
mainMenu = dict()
specialMenu = dict()
serviceMenu = []
for _ in range(A):
menu, price = map(str, input().split())
mainMenu[menu] = int(price)
for _ in range(B):
menu, price = map(str, input().split())
specialMenu[menu] = int(price)
for _ in range(C):
menu = input().strip()
serviceMenu.append(menu)
mainTotal = 0
specialTotal = 0
serviceCnt = 0
N = int(input())
for _ in range(N):
menu = input().strip()
if menu in mainMenu:
mainTotal += mainMenu[menu]
elif menu in specialMenu:
specialTotal += specialMenu[menu]
else:
serviceCnt += 1
result = "Okay"
if mainTotal < 20000 and specialTotal > 0:
result = 'No'
elif mainTotal + specialTotal < 50000 and serviceCnt > 0:
result = 'No'
elif serviceCnt > 1:
result = 'No'
print(result)
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준 / Python 파이썬] 14713번 - 앵무새 (0) | 2023.05.19 |
---|---|
[백준 / Python 파이썬] 1411번 - 비슷한 단어 (0) | 2023.05.19 |
[백준 / Python 파이썬] 1972번 - 놀라운 문자열 (0) | 2023.05.06 |
[백준 / Python 파이썬] 16165번 - 걸그룹 마스터 준석이 (0) | 2023.05.06 |
[백준 / Python 파이썬] 26169번 - 세 번 이내에 사과를 먹자 (0) | 2023.04.29 |