문제
https://www.acmicpc.net/problem/23559
제주대 학생회관 식당에는 두 개의 메뉴가 있다. 코너 A로 가면 5,000원짜리 메뉴를 먹을 수 있고, 코너 B로 가면 1,000원짜리 메뉴를 먹을 수 있다.
준원이는 대면 수업이 시작되는 바람에 이제 남은 학기의 일동안 매일 학식의 두 메뉴 중 정확히 하나를 골라서 먹어야 한다. 일간의 두 메뉴는 이미 공지되어 있고, 준원이는 이미 모든 날의 각 메뉴가 얼마나 맛있을지 수치를 매겨 두었다.
준원이는 일간 학식에 총 원 이하를 써야 한다.
여러분이 일간 준원이의 메뉴를 잘 골라서, 고른 메뉴의 맛의 합을 최대화 해주자!
입력
첫째 줄에는 두 정수 , 가 주어진다.
둘째 줄부터 개의 줄에, 각 날에 먹을 수 있는 5,000원짜리 메뉴의 맛 와 1,000원짜리 메뉴의 맛 가 공백을 사이에 두고 주어진다.
출력
준원이가 고른 메뉴들의 맛의 합을 최대화했을 때의 값을 출력하라.
Algorithm
모든 메뉴를 1000원 짜리로 가정하고 예산과 맛을 구한다
일자 당 비싼 점심과 싼 점심의 맛 차이를 구한다
맛 차이를 내림차순으로 정렬 후 예산이 되는 한 차이가 큰 것 부터 맛에 추가한다. (단 차이가 음수로 나오는 경우 추가를 중단한다)
이후 최종적으로 나온 맛 점수를 출력한다
Code
import sys
input = sys.stdin.readline
N, X = map(int,input().split())
price = [tuple(map(int,input().split())) for _ in range(N)]
cnt = 0
X -= 1000 * N
diff = []
for a, b in price:
diff.append(a - b)
cnt += b
diff.sort(reverse=True)
for c in diff:
if X >= 4000 and c > 0:
X -= 4000
cnt += c
elif c <= 0:
break
print(cnt)
'Koala - 19기 > 코딩테스트 심화 스터디' 카테고리의 다른 글
[백준/Python] #5585: 거스름돈 (0) | 2025.07.27 |
---|---|
[백준/Python] #29155 개발자 지망생 구름이의 취업 뽀개기 (0) | 2025.07.27 |
[codetree] A / B 출력 (0) | 2025.07.20 |
[python/백준] 11059: 크리문자열 (0) | 2025.07.20 |
[백준/Python] #2230: 수 고르기 (0) | 2025.07.20 |