🗒 11279번 문제

📌 priority Queue를 사용해서 정렬된 큐를 만들어라 ❗️
1️⃣ priority queue는 우선순위가 큰 순위로 큐를 정렬한다.
2️⃣ 0을 입력했을 때는 가장 위에 있는 top값을 pop하면 된다.
-> 이미 큰 순서대로 정렬되어 있기 때문에 따로 정렬하지 않아도 된다.
-> 하지만 queue가 비어있는 경우에 top를 pop하면 문제가 생기기 때문에 0를 출력하도록 한다.
3️⃣ 다른 값을 입력했을 경우에는 push 동작을 하도록 코드를 짠다.
4️⃣ 🍆🍆🍆 cin, cout은 printf, scanf보다 출력, 입력받는 시간이 크다
-> 따라서 해당 시간을 줄이기 위한 조치를 내려줘야 한다.
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
-> ios_base :: sync_with_stdio(false)는 cin, cout를 가속하는 편법이기에
아무데나 사용하는 것은 좋지 않고 이 상황에서 cout, cin, scanf, printf와 혼용하면
오류를 발생시킬 수 있기 때문에 되도록이면 🔥scanf, printf, '\n'🔥를 사용하는 게 속도에는 좋다.
➰ 코드로 나타낸 11279번 ➰
#include <iostream>
#include <queue>
using namespace std;
int num;
priority_queue<int> pq;
int main() {
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> num;
while(num--) {
int n;
cin >> n;
if (n == 0) {
if (pq.empty()) {
cout << 0 << "\n";
}
else {
cout << pq.top() << "\n";
pq.pop();
}
}
else {
pq.push(n);
}
}
return 0;
}