알고리즘/문제풀이

[Heap] 절댓값 힙

lipnus 2019. 1. 27. 16:33
반응형

백준 11286 절댓값 힙

https://www.acmicpc.net/problem/11286


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.PriorityQueue;

public class Main {

static PriorityQueue<AbsValue> pq = new PriorityQueue<>();

public static void main(String[] args) throws Exception{

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt( br.readLine() );

for(int i=0; i<N ;i++){
int input = Integer.parseInt(br.readLine());

if(input==0){
if(!pq.isEmpty()) System.out.println( pq.poll().value );
else System.out.println(0);
}else{
pq.offer(new AbsValue(input));
}

}
}

static class AbsValue implements Comparable<AbsValue>{
int value;

AbsValue(int value){
this.value = value;
}

@Override
public int compareTo(AbsValue o) {
if(Math.abs(this.value) < Math.abs(o.value)){ //절댓값 작은 거 우선
return -1;
}else if(Math.abs(this.value)==Math.abs(o.value)){ //절대값 같으면, 값이 작은 거 우선
if(this.value < o.value) return -1;
else if(this.value == o.value) return 0;
else return 1;
}else{
return 1;
}
}
}
}


compareTo

이 패턴을 기억

if( this.비교값 연산 o.비교값) return -1;


연산은 우선순위가 높은 것(작은값)이 작다고 표시.

반응형

'알고리즘 > 문제풀이' 카테고리의 다른 글

[Union&Find] 네트워크연결  (0) 2019.02.27
[그래프] LCA1  (0) 2019.02.26
[Heap] 최소 힙, 최대 힙  (0) 2019.01.27
[BFS] 네트워크  (0) 2019.01.20
[다익스트라] 최단경로  (0) 2019.01.20