◈ 오류 정정 및 피드백 환영
12018번: Yonsei TOTO
첫째 줄에는 과목 수 n (1 ≤ n ≤ 100)과 주어진 마일리지 m (1 ≤ m ≤ 100)이 주어진다. 각 과목마다 2줄의 입력이 주어지는데 첫째 줄에는 각 과목에 신청한 사람 수 Pi과 과목의 수강인원 Li이 주어
www.acmicpc.net
🔎문제 분석
데이터를 저장하되 순위를 매겨야 하므로 우선순위 큐(Priority Queue)로 접근하면 된다.
수강인원보다 신청자가 적은 경우 1만 투자해도 해당 과목을 들을 수 있지만, 같거나 많은 경우에는 커트라인 지점에 있는 사람만큼의 마일리지를 투자하면 된다. 예컨대 1명이 초과된 상황이라면 마일리지가 2번째로 작은 사람만큼의 마일리지만 투자해도 우선수위는 성준이에게 있기 때문에 신청이 가능하다.
import heapq as hq
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
cnt = 0
milege = []
for _ in range(n):
p, l = map(int, input().split())
a = list(map(int, input().split()))
if p>=l:
res = []
for i in a:
hq.heappush(res,i)
for _ in range(p-l+1):
mile = hq.heappop(res)
else:
mile = 1
hq.heappush(milege,mile)
while milege and True:
m -= hq.heappop(milege)
if m<0:
break
cnt += 1
print(cnt)
'Algorithm > Python' 카테고리의 다른 글
[Python] 백준 - 1654번 랜선 자르기(Binary Search) (0) | 2022.02.26 |
---|---|
[Python] 프로그래머스 - [1차] 캐시(LRU/Deque) (0) | 2022.02.24 |
[Python] 백준 - 17225번 세훈이의 선물가게(Priority Queue) (0) | 2022.02.23 |
[Python] 백준 - 1967번&1167번 트리의 지름(DFS/BFS) (0) | 2022.02.22 |
[Python] 백준 - 4256번 트리(DFS) (0) | 2022.02.21 |
댓글