백준 1927 최소 힙 - JAVA

2025. 2. 13. 13:49·알고리즘/백준

1927 문제 링크


https://www.acmicpc.net/problem/1927

 

문제 설명


 

 

입출력


 

코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.io.*;
import java.util.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        int N = Integer.parseInt(br.readLine());
        PriorityQueue<Integer> pqueue = new PriorityQueue<>();
        StringBuilder sb = new StringBuilder();
        
        for (int i = 0; i < N; i++) {
            int x = Integer.parseInt(br.readLine());
            if (x == 0 && pqueue.size() == 0) {
                sb.append(0).append("\n");
            } else if (x == 0 && pqueue.size() != 0) {
                sb.append(pqueue.poll()).append("\n");
            } else {
                pqueue.offer(x);
            }
        }
        bw.write(sb.toString());
        bw.flush();
    }
}
Colored by Color Scripter
cs

 

 

알고리즘 설명


최소 힙은 완전 이진 트리 형태로 구성되며, 부모 노드는 자식 노드보다 항상 값이 작거나 같습니다. 문제를 풀다 보면 자료구조의 중요성을 더 잘 느낄 수 있습니다.

비록 우선순위 큐(Priority Queue)가 최소 힙을 자동으로 정렬해 주지만, 최소 힙의 작동 원리와 정렬 방법을 직접 이해하고 사용하는 것이 중요합니다.

우선순위 큐는 원소를 넣을 때마다 자동으로 최소값을 가장 앞에 배치해줍니다. 이를 활용하여 큐가 비어있다면 0을 출력하고, 비어있지 않다면 큐에서 가장 앞에 있는 원소를 제거하고 출력한 후, 그 값을 StringBuilder에 줄바꿈과 함께 추가하여 출력했습니다.

 

코드 해석


우선순위 큐를 생성하여 입력 되는 값이 0이고 pqueue가 비어있다면 0을 sb에 append, 입력되는 값이 0이고 pqueue가 비어있지 않다면 첫 번째 원소를 sb에 append, 입력되는 값이 0이 아니라면 해당 값을 pqueue에 추가했습니다.

이후, sb를 출력하였습니다.

'알고리즘 > 백준' 카테고리의 다른 글

백준 2805 나무자르기 - JAVA  (1) 2025.02.15
백준 16928 뱀과 사다리 게임 - JAVA  (1) 2025.02.14
백준 1697 숨바꼭질 - JAVA  (1) 2025.02.06
백준 1012 유기농 배추 - JAVA  (1) 2025.02.05
백준 1920 수 찾기 - JAVA  (1) 2025.02.04
'알고리즘/백준' 카테고리의 다른 글
  • 백준 2805 나무자르기 - JAVA
  • 백준 16928 뱀과 사다리 게임 - JAVA
  • 백준 1697 숨바꼭질 - JAVA
  • 백준 1012 유기농 배추 - JAVA
BIS's tech Blog
BIS's tech Blog
Welcome to Kanghyun's tech blog :)
  • BIS's tech Blog
    벼익숙의 기술 블로그
    BIS's tech Blog
  • 전체
    오늘
    어제
    • 분류 전체보기 (68)
      • 알고리즘 (54)
        • 백준 (45)
        • 프로그래머스 (9)
      • CS 스터디 (14)
        • CS - JAVA (11)
        • CS - DB (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Baekjoon
    너비 우선 탐색
    CS
    Lv2
    java
    Top-Down
    브루트포스
    프로그래머스
    완전탐색
    BFS
    백준
    알고리즘 고득점 kit
    DFS
    기술질문
    재귀
    자료구조
    백트래킹
    dp
    깊이 우선 탐색
    동적 계획
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BIS's tech Blog
백준 1927 최소 힙 - JAVA
상단으로

티스토리툴바