Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

전공공부

[BOJ 11286] 절대값 힙 본문

Study/Problem Solving

[BOJ 11286] 절대값 힙

monitor 2023. 8. 13. 13:22

힙 문제는 대부분 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