SSONG Cloud
[백준] 1927 최소 힙 본문
반응형
문제 출처: www.acmicpc.net/problem/1927
1927번: 최소 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
: 배열에 자연수 x를 넣고 배열에서 가장 작은 값을 출력하고 그 값을 배열에서 제거한다.
: 비어있는 배열에서 출발하여 자연수가 주어지면 그 값을 넣고 0이 주어지면 현재 배열 상태에서 가장 작은 수를 출력하고 배열에서 그 수를 삭제할 수 있도록한다.
: 정렬이 자동으로 될 수 있도록 PriorityQueue를 사용하여 구현한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
public static void main(String[] args) throws NumberFormatException, IOException {
// 숫자의 개수를 받고
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> q = new PriorityQueue<>();
// 주어진 개수만큼 숫자를 받으면서
for(int i = 0; i < N; i++) {
int value = Integer.parseInt(br.readLine());
// 그 숫자가 0이면 큐의 첫번째 숫자를 출력에 넣어주고
if(value == 0) {
if(q.size() == 0) {
// 큐에 들어있는게 없으면 0을 출력으로 넣어주고
sb.append("0\n");
}else {
sb.append(q.poll()+"\n");
}
}else {
// 0이 아니면 큐에 숫자를 넣어줌
q.add(value);
}
}
System.out.println(sb);
}
}
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준] 17129 윌리암슨수액빨이딱따구리가 정보섬에 올라온 이유 (0) | 2021.03.15 |
---|---|
[백준] 10026 적록색약 (0) | 2021.03.15 |
[백준] 1744 수 묶기 (0) | 2021.03.10 |
[백준] 7576 토마토 (0) | 2021.03.01 |
[백준] 1697. 숨바꼭질 (0) | 2021.03.01 |
Comments