
가. 우선순위 큐를 사용하여 오름차순으로 나열한다.
나. 가장 작은 앞에 두개를 더하고 더한 값을 우선순위 큐에 다시 넣는다.
import java.util.*;
public class P1931 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[][] arr = new int[N][2];
for (int i = 0; i < N; i++) {
arr[i][0] = sc.nextInt();
arr[i][1] = sc.nextInt();
}
Arrays.sort(arr, (a, b) -> {
if (a[1] == b[1]) {
return Integer.compare(a[0], b[0]);
}
return Integer.compare(a[1], b[1]);
});
int time = 0;
int cnt = 0;
for (int i = 0; i < N; i++) {
if (arr[i][0] >= time) {
time = arr[i][1];
cnt++;
}
}
System.out.println(cnt);
}
}
가. 우선순위 큐
import java.util.PriorityQueue
import java.util.Collections
PriorityQuere<자료형> que = new PriorityQuere<>(); //내림차순
PriorityQuere<자료형> que = new PriorityQuere<>(Collection.reverseOrder()); //오름차순
que.add(값)que.poll() : 맨 첫번째로 우선순위 높은거자바식 우선순위 큐 사용법에 대해 알게되었다.