본문 바로가기

알고리즘/백준

1826. 연료 채우기

현재 연료로 갈 수 있는 거리에 포함되는 아이들을 heap에 넣는다. 

그리고 연료가 가장 큰 아이를 택해서 p에 더해주고 cnt를 증가시킨다 -> 방문

import heapq
n = int(input())
oil = []
for _ in range(n):
    oil.append(tuple(map(int, input().split())))
l, p = map(int, input().split())
oil.sort()
hq,i,cnt = [],0,0
while p < l:
    while i < n and oil[i][0] <= p:
        heapq.heappush(hq, -oil[i][1])
        i += 1
    if not hq:
        break
    p -= heapq.heappop(hq)
    cnt += 1
print(-1 if p < l else cnt)

 

'알고리즘 > 백준' 카테고리의 다른 글

1189. 컴백홈  (0) 2022.03.29
2468. 안전 영역  (0) 2022.03.25
14500. 테트로미노  (0) 2022.03.23
10159. 저울  (0) 2022.03.21
2638. 치즈  (0) 2022.03.20