11279 최대힙
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;
}
접근 방식
힙
- 최대힙은 우선순위 큐와 같다.
- 우선순위 큐를 이용하여 입력값이 0일때와 아닐때의 로직을 수행해주면 된다.
다시 생각해 볼 점
- 입력값이 0일때, 우선순위 큐가 비어있는지 체크가 필요하다.
- 과거의 코드는 내가 직접 최대 힙을 구현하여 풀었는데, stl의 우선순위 큐를 쓴 것과 같은 효율이 나와서 기분이 좋았다 : )