반응형
힙(heap)자료구조를 사용하는 우선순위 큐(priority queue)를 사용하는 문제였습니다.
풀이방법
default가 less(내림차순 정렬, top은 현재 heap 중 가장 큰 값 즉 max heap) 이므로 greater옵션을 주어 min heap으로 바꾸어준 뒤 조건에 맞게 출력해주면 됩니다.
Code
#include <iostream>
#include <queue>
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
using namespace std;
int main() {
fastio;
priority_queue<int, vector<int>, greater<int>> q;//가장 작은 값을 front에 넣기 위해 우선 순위 큐 선언
int n;
cin >> n;
while (n--){
int x;
cin >> x;
if (x == 0){
if (q.empty()) cout << 0 << '\n';
else { cout << q.top() << '\n'; q.pop(); }
}
else q.push(x);
}
}
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 1780번 : 종이의 개수 답 (0) | 2020.09.11 |
---|---|
(C++) - 백준(BOJ) 2630번 : 색종이 만들기 답 (0) | 2020.09.10 |
(C++) - 백준(BOJ) 1620번 : 나는야 포켓몬 마스터 이다솜 답 (0) | 2020.09.08 |
(C++) - 백준(BOJ) 1074번 : Z 답 (0) | 2020.09.08 |
(Python) - 백준(BOJ) 16829번 : Hashing 답 (0) | 2020.08.23 |