코테 공부

[우선순위큐]절댓값 힙(백준 11286번, 자바)

DaEun_ 2023. 1. 26. 09:19

11286번: 절댓값 힙 (acmicpc.net)

 

11286번: 절댓값 힙

첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

 

 

 

import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		
		PriorityQueue<Integer> pq=new PriorityQueue<>(new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				// TODO Auto-generated method stub
				
				if(Math.abs(o1)==Math.abs(o2)) {
					return o1-o2;
				}
				else return Math.abs(o1)-Math.abs(o2);
			}
			
			
		});
		
		for(int i=0;i<N;i++) {
			int n=sc.nextInt();
			if(n==0) printNum(pq);
			else pq.add(n);
		}
		
		
	}
	
	static void printNum(PriorityQueue<Integer> pq) {
		if(pq.isEmpty()) System.out.println(0);
		else System.out.println(pq.poll());
		
	}
	
	

}