🗒 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;
}
profile
더 멋진 iOS 개발자를 향해

0개의 댓글

Powered by GraphCDN, the GraphQL CDN