반응형
백준 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 |