[伯俊]112,79号:最大お尻


📝 質問する


お尻って何?


これは,配列中に最大値と最大値を容易に見つけるために実施される資料構造である.
これは、リストを並べて接続するよりも効率的な優先キューのために作成されます.
臀部はバイナリツリーの形態を有し,最も重要な特徴の一つは親と子供の間の大きさ規則が明確であることである.
最大ヒップの場合:親ノードの値>子ノードの値
最小ヒップの場合:親ノードの値<子ノードの値
新しい値が追加された場合:最後のノードに値を追加し、親ノードと値を比較しながら2つのノードの位置を置き換えます.
≪値の削除|Remove Value|oem_src≫:ルート・ノードの値を削除し、最後のノードの値をルート・ノードにインポートし、サブノードのより少ない(またはより大きい)値を置き換えます.
最安値出力を見出す問題なので,すぐに優先順位Qを思いつき,解決した.

📌コード#コード#

package Baekjoon;

import java.io.*;
import java.util.PriorityQueue;

public class BOJ11279 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> Integer.compare(o2, o1));//내림차순
        for(int i = 0; i < n; i++){
            int input = Integer.parseInt(br.readLine());
            if(input == 0){
                if(pq.isEmpty()) sb.append(0).append("\n");
                else sb.append(pq.poll()).append("\n");
            } else {
                pq.add(input);
            }
        }
        System.out.println(sb);

    }
}