전공공부
[BOJ 11286] 절대값 힙 본문
힙 문제는 대부분 PriorityQueue의 Comparator를 잘 구현하면 풀리는 것 같다.
import java.io.*;
import java.util.*;
public class BOJ_11286 {
public static void main(String[] args) throws Exception{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tk = new StringTokenizer(in.readLine()," ");
int N = Integer.parseInt(tk.nextToken());
Queue<Integer> q = new PriorityQueue<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (Math.abs(o1) > Math.abs(o2)) {
return 1;
} else if (Math.abs(o1) < Math.abs(o2)) {
return -1;
} else {
return Integer.compare(o1, o2);
}
}
});
while(N > 0){
N--;
tk = new StringTokenizer(in.readLine()," ");
int x = Integer.parseInt(tk.nextToken());
if(x == 0){
//HEAP OUT OR IF == 0 THEN PRINT 0
if(q.size() == 0){
System.out.println(0);
}else {
System.out.println(q.poll());
}
}else{
q.add(x);
}
}
}
}
11286번: 절댓값 힙
첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
'Study > Problem Solving' 카테고리의 다른 글
[BOJ 15989] 1,2,3 더하기4 (0) | 2023.08.26 |
---|---|
[BOJ 7568] 덩치 (0) | 2023.08.20 |
[BOJ 2606] 바이러스 (0) | 2023.08.12 |
[BOJ 8979] 올림픽 (0) | 2023.07.30 |
[BOJ 10431] 줄 세우기 (0) | 2023.07.30 |