1927번: 최소 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
문제 간단 설명
이 문제는 제목처럼 최소 힙이라는 자료구조를 사용하는 해결 방법인 문제입니다. 저는 최소 힙의 역할을 해줄 수 있는 우선순위 큐(Priority Queue)를 이용하여 간단하게 풀이 하였습니다.
풀이
Java에서 제공하는 라이브러리인 Priority Queue를 이용하여 문제에서 주어진 그대로 사용하였습니다.
코드
package com.baekjoon.silver;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
public class Main_BJ_01927_S2_최소힙 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
//최소 힙 역할을 해줄 PriorityQueue를 만들어 주었습니다.
PriorityQueue<Integer> pq = new PriorityQueue<>();
StringBuilder sb = new StringBuilder();
//요구사항에 맞도록 입력 값이 자연수일경우 pq에 입력해주고
//0일 경우에는 최소값을 출력하는 동작을 반복합니다.
for (int i = 0; i < n; i++) {
int now = Integer.parseInt(br.readLine());
if(now == 0) {
if(pq.isEmpty()) sb.append(0+"\n");
else sb.append(pq.poll()+"\n");
} else {
pq.add(now);
}
}
//결과물 출력!
System.out.println(sb.toString().trim());
}
}
'Coding Test > Baekjoon' 카테고리의 다른 글
[백준] 9019 DSLR, java (0) | 2022.12.14 |
---|---|
[백준] 7569 토마토, java (0) | 2022.12.12 |
[백준] 1764 듣보잡, java (0) | 2022.12.11 |
[백준] 13460 구슬 탈출 2, java (0) | 2022.11.27 |
[백준] 10989 수 정렬하기 3, java (0) | 2022.07.11 |