https://www.acmicpc.net/problem/11286
if(입력!=0)
add(입력>0) (절대값,+1)
add(입력<0) (절대값,-1)
if(입력==0)
if(빔) 0출력
if(안빔) 우선순위큐는 자동정렬-> top에있는거 출력
-add
큐에 배열을 (절대값, 1) (절대값, -1)로 넣음 => 곱하면 원래값이 나오도록
-comparator
절대값이 같으면 -> 오리지날 값끼리 비교 -> 작은거 위로
절대값이 다르면-> 절대값끼리 비교 -> 작은거 위로
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main_11286_유동훈 {
static int N;
static PriorityQueue<int[]> q = new PriorityQueue<>(new Comparator<int[]>()
{
@Override
public int compare(int[] o1, int[] o2) {
// TODO Auto-generated method stub
if(Math.abs(o1[0])==Math.abs(o2[0])) return o1[0]*o1[1]-o2[0]*o2[1];
return Math.abs(o1[0])-Math.abs(o2[0]);
}
});
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
StringTokenizer st;
//st = new StringTokenizer(br.readLine());
StringBuilder sb= new StringBuilder();
for(int i=0;i<N;++i)
{
int input=Integer.parseInt(br.readLine());
if(input!=0)
{
if(input>0)
{
q.add(new int[] {Math.abs(input),1});
}
else
{
q.add(new int[] {Math.abs(input),-1});
}
}
else
{
if(q.isEmpty())
sb.append(0+"\n");
else
{
sb.append(q.peek()[0]*q.poll()[1]+"\n");
}
}
}
System.out.println(sb);
}
}
'Algorithm > boj' 카테고리의 다른 글
백준: 11047 동전 0 (0) | 2022.08.12 |
---|---|
백준 : 15686 치킨배달 (0) | 2022.08.12 |
2961번 : 도영이가 만든 맛있는 음식 (0) | 2022.08.11 |
3040번: 백설 공주와 일곱 난쟁이 (0) | 2022.08.11 |
16926번: 배열돌리기1 (0) | 2022.08.10 |