728x90
https://www.acmicpc.net/problem/1826
주유소 정보는 거리순으로 주어지지 않기 때문에 우선순위 큐에 정보를 넣고 오름차순 정렬하였다.
현재 연료로 갈 수 있는 주유소까지의 최대 기름을 큐에 넣고는 하나씩 꺼내서 나아간다!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static int n, l, p;
public static class Distance implements Comparable<Distance> {
int a;
int b;
Distance(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public int compareTo(Distance o) {
return this.a - o.a;
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
PriorityQueue<Distance> q= new PriorityQueue<>();
StringTokenizer st;
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
q.add(new Distance(a,b));
}
st = new StringTokenizer(br.readLine());
l = Integer.parseInt(st.nextToken());
p = Integer.parseInt(st.nextToken());
PriorityQueue<Integer> pq = new PriorityQueue(Collections.reverseOrder());
int count=0;
while (p < l) {
while(!q.isEmpty()&& q.peek().a<=p) {
pq.add(q.poll().b);
}
if(pq.isEmpty()) {
count=-1;
break;
}
count++;
p+=pq.poll();
}
System.out.println(count);
}
}
'Java' 카테고리의 다른 글
[백준 7569] 토마토 (JAVA) (0) | 2023.03.28 |
---|---|
[백준 2636] 치즈 (JAVA) (0) | 2023.03.28 |
[백준 6588] 골드바흐의 추측 (JAVA) (0) | 2023.03.25 |
[백준 15711] 환상의 짝꿍 (JAVA) (0) | 2023.03.24 |
[백준 2485] 가로수 (JAVA) (0) | 2023.03.23 |