https://www.acmicpc.net/problem/11286
priority queue를 이용해서
조건에 따라 우선순위를 부여하는 방식으로
구현했다
내 풀이
import java.io.*;
import java.util.*;
public class Main {
static int K, N;
static int[] A;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
PriorityQueue<Integer> q = new PriorityQueue<>(((o1, o2) -> {
int answer1 = Math.abs(o1);
int answer2 = Math.abs(o2);
if(answer1==answer2){
return o1>o2 ? 1 : -1;
}
return answer1-answer2;
} ));
N = Integer.parseInt(br.readLine());
for(int i=0;i<N;i++){
int input = Integer.parseInt(br.readLine());
if(input==0){
Integer result = q.poll();
if(result!=null)
sb.append(result+"\n");
else
sb.append(0+"\n");
} else {
q.add(input);
}
}
System.out.println(sb);
}
}
'스터디 > Algorithm' 카테고리의 다른 글
[백준] 직사각형 탈출 16973 java - bfs (0) | 2024.06.15 |
---|---|
[백준] 입국심사 3079 java - 이분 탐색 (0) | 2024.05.30 |
[백준] 불 4179 java - bfs (0) | 2024.05.03 |
[프로그래머스스쿨] 가장 큰 수 java (lv.2) (0) | 2024.05.03 |
[백준] 겹치는 건 싫어 java - two pointer (1) | 2024.05.02 |