less than 1 minute read

11279. 최대 힙 / c++ / Silver2 / 5분

문제 및 코드

과거에 풀었던 문제라 코드 리뉴얼이 안됐다.
새로운 코드

#include <iostream>
#include <queue>
using namespace std;

std::priority_queue<int> PQ;
int Input;

int N;

int main()
{
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    cin >> N;

    while (N-->0)
    {
        cin >> Input;
        if (Input == 0)
        {
            if (PQ.empty())
            {
                cout << 0 << '\n';
            }
            else
            {
                cout << PQ.top() << '\n';
                PQ.pop();
            }
        }
        else
        {
            PQ.push(Input);
        }
    }

    
    return 0;
}

접근 방식

  1. 최대힙은 우선순위 큐와 같다.
  2. 우선순위 큐를 이용하여 입력값이 0일때와 아닐때의 로직을 수행해주면 된다.

다시 생각해 볼 점

  1. 입력값이 0일때, 우선순위 큐가 비어있는지 체크가 필요하다.
  2. 과거의 코드는 내가 직접 최대 힙을 구현하여 풀었는데, stl의 우선순위 큐를 쓴 것과 같은 효율이 나와서 기분이 좋았다 : )