문제
제주대 학생회관 식당에는 두 개의 메뉴가 있다. 코너 A로 가면 5,000원짜리 메뉴를 먹을 수 있고, 코너 B로 가면 1,000원짜리 메뉴를 먹을 수 있다.
준원이는 대면 수업이 시작되는 바람에 이제 남은 학기의 � 일동안 매일 학식의 두 메뉴 중 정확히 하나를 골라서 먹어야 한다. 일간의 두 메뉴는 이미 공지되어 있고, 준원이는 이미 모든 날의 각 메뉴가 얼마나 맛있을지 수치를 매겨 두었다.
준원이는 일간 학식에 총 원 이하를 써야 한다.
여러분이 일간 준원이의 메뉴를 잘 골라서, 고른 메뉴의 맛의 합을 최대화 해주자!
입력
첫째 줄에는 두 정수 , 가 주어진다.
둘째 줄부터 개의 줄에, 각 날에 먹을 수 있는 5,000원짜리 메뉴의 맛 와 1,000원짜리 메뉴의 맛 가 공백을 사이에 두고 주어진다.
출력
준원이가 고른 메뉴들의 맛의 합을 최대화했을 때의 값을 출력하라.
예제 입력 1
3 9000
40 10
20 5
30 20
예제 출력 1
65
예제 입력 2
1 1000
30 10
예제 출력 2
10
예제 입력 3
1 5000
10 30
예제 출력 3
30
from heapq import heappush, heappop
import sys
input = sys.stdin.readline
Ah=[] #맛의 차이 A-B를 저장할 힙
N,X=map(int,input().split()) #N일동안 X원 만큼 사용가능
sum=0 #맛의 최댓값을 넣는 변수
for i in range(N):
A,B=map(int,input().split())
heappush(Ah,(-(A-B),A-B)) #최대힙
sum+=B #맛의 최댓값에 1000원짜리 맛의 가치를 더해줌
X-=N*1000 #일단 1000원짜리를 다 담았으므로 일수*1000을 해서 X원에서 빼줌
while X>=4000 and Ah[0][1]>0: #5000-1000이므로 남은돈이 4000원이상 이고, A-B가 양수일경우 반복문 수행
sum+=heappop(Ah)[1] #A-B가 최대인 양수값을 맛의 최댓값 변수에 더해줌
X-=4000 #남은 돈에서 4000원을 빼줌
print(sum)
'알고리즘 > 백준' 카테고리의 다른 글
백준-2563(색종이)-python3 (0) | 2024.05.10 |
---|---|
백준-10163(색종이)-python3 (0) | 2024.05.10 |
백준-1715번(카드 정렬하기)-python (4) | 2023.12.27 |
백준-11286번(절대값 힙)-python (0) | 2023.12.27 |
백준-11000번(강의실 배정)-python3 (0) | 2023.12.27 |