백준 11286 - 절댓값 힙

Updated:

Java

11286 번 - 절댓값 힙

문제

접근 방법

우선 순위 queue로 쉽게 해결하였다.

코드

import java.util.*;
import java.io.*;

public class Main {
	static int n, result;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringTokenizer stk;
    	n = stoi(br.readLine());

    	PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2)->{
    		int a = Math.abs(o1);
    		int b = Math.abs(o2);
    		int comp = Integer.compare(a, b);	// 절댓값 크기 비교
    		if(comp == 0)	// 절댓값이 같으면, 그 수 크기 비교
    			return Integer.compare(o1, o2);
    		else
    			return comp;
    	});
    	int input;
    	while(n-- != 0) {
    		input = stoi(br.readLine());

    		if(input != 0)
    			pq.add(input);
    		else {
    			if(pq.isEmpty())
    				System.out.println(0);
    			else
    				System.out.println(pq.poll());
    		}
    	}

    	br.close();
	}

	static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}

총평

후기

개선할 점