728x90
300x250
https://www.acmicpc.net/problem/11286
기본적으로 우선순위 큐(PriorityQueue)는 최소힙의 성질을 가지고 있다.
위의 문제는 우선순위 큐의 조건을 변경하여 푸는 문제!
Sort Collection의 Comparator와 비슷한 개념으로 사용하면 된다.
<Java 코드>
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
PriorityQueue<Integer> pq = new PriorityQueue<Integer>((o1, o2) -> {
if (Math.abs(o1) == Math.abs(o2))
return o1 > o2 ? 1 : -1;
return Math.abs(o1) > Math.abs(o2) ? 1 : -1;
});
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(st.nextToken());
if (num == 0)
if (pq.isEmpty())
System.out.println(0);
else
System.out.println(pq.poll());
else {
pq.add(num);
}
}
}
}
728x90
'알고리즘 > 우선순위 큐' 카테고리의 다른 글
백준 2075번: N번째 큰 수 [우선순위큐][정렬][자료구조] -Java (0) | 2024.05.02 |
---|