백준 1826. 연료 채우기

2023. 10. 25. 11:39·백준

https://www.acmicpc.net/problem/1826

 

1826번: 연료 채우기

첫째 줄에 주유소의 개수 N(1 ≤ N ≤ 10,000)가 주어지고 두 번째 줄부터 N+1번째 줄 까지 주유소의 정보가 주어진다. 주유소의 정보는 두개의 정수 a,b로 이루어 져 있는데 a(1 ≤ a ≤ 1,000,000)는 성경

www.acmicpc.net

import sys
import heapq

input = sys.stdin.readline
n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)] # [거리, 연료의 양]
town, fuel = map(int, input().split())
cnt = 0
arr.append([town, 0])  # 맨 뒤에 추가(도착지점)
arr.sort()  # 주유소 거리순 정렬
heap = []

for i in range(n+1):
    if fuel - arr[i][0] < 0: # 현재 연료로 가장 가까운 주유소까지 가지 못함
        while heap:
            fuel += -heapq.heappop(heap) # 힙에 있는 연료를 높은 순으로 넣어줌
            cnt += 1 # 충전 횟수 증가
            if fuel - arr[i][0] >= 0:
                break
    if len(heap) == 0 and fuel - arr[i][0] < 0:  # 충전할 주유소가 없고 가장 가까운 주유소까지 가지 못함
        cnt = -1  # 실패!
        break
    else:  # 뒤에 충전할 주유소가 있고 가장 가까운 주유소까지 갈 수 있음
        heapq.heappush(heap, -arr[i][1])  # 힙에 연료가 높은걸 우선순위로 해서서넣어줌

print(cnt)
저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 4485. 녹색 옷 입은 애가 젤다지?  (0) 2023.10.30
백준 18430. 무기 공학  (0) 2023.10.27
백준 17825. 주사위 윷놀이  (0) 2023.10.24
백준 1781. 컵라면  (0) 2023.10.23
백준 2212. 센서  (0) 2023.10.20
'백준' 카테고리의 다른 글
  • 백준 4485. 녹색 옷 입은 애가 젤다지?
  • 백준 18430. 무기 공학
  • 백준 17825. 주사위 윷놀이
  • 백준 1781. 컵라면
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    코딩테스트준비
    항해99
    Til
    99클럽
    개발자취업
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
백준 1826. 연료 채우기
상단으로

티스토리툴바