백준 1781 컵라면
Categories: boj
문제
https://www.acmicpc.net/problem/1781
풀이
n이 최대 20만이기 때문에 O(n^2)으로는 시간초과가 날 것이라 생각했다.
뭔가 선형적으로 탐색하며 넣고 빼고를 어떻게 잘 할 수 있을까 고민했다.
데드라인 기준으로 정렬 후, 물품을 하나씩 담는데,
현재 담은 물품의 개수보다 데드라인이 작아서 해당 물건을 넣지 못한다면,
제일 컵라면 수가 작은 물품을 빼고 큰 물품을 집어넣으면 된다.
import heapq
n = int(input())
arr = []
for i in range(n):
a,b = list(map(int,input().split()))
arr.append((a,b))
arr.sort()
q = []
for a,b in arr:
heapq.heappush(q,b)
if a < len(q):
heapq.heappop(q)
print(sum(q))
Leave a comment