문제
https://www.acmicpc.net/problem/11286
풀이
PriorityQueue를 사용하면 된다.
Comparator로 정렬 조건을 명시해주었다.
소스코드
package heap;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Comparator;
import java.util.PriorityQueue;
public class BOJ11286 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
PriorityQueue<Integer> pque = new PriorityQueue<Integer>(new Comparator<Integer>(){
@Override
public int compare(Integer a, Integer b){
int rs = Math.abs(a) - Math.abs(b);
if(rs == 0) rs = a-b;
return rs;
}
});
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++){
int x = Integer.parseInt(br.readLine());
if(x == 0) {
if(pque.isEmpty()) {
bw.write("0\n");
} else {
bw.write(pque.poll() + "\n");
}
} else {
pque.offer(x);
}
}
bw.flush();
}
}
'💡Problem Solving > BOJ' 카테고리의 다른 글
[BOJ 1956] 운동 (Java) (0) | 2021.11.13 |
---|---|
[BOJ 1655] 가운데를 말해요 (Java) (0) | 2021.11.12 |
[BOJ 1927] 최소 힙 (Java) (0) | 2021.11.12 |
[BOJ 9375] 패션왕 신해빈 (Java) (0) | 2021.11.11 |
[BOJ 3036] 링 (Java) (0) | 2021.11.11 |