Algorithm/BOJ

[BOJ] #1927 최소 힙

jHoon0223 2024. 3. 2. 16:42

https://www.acmicpc.net/problem/1927

 

1927번: 최소 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net


우선순위 큐를 활용하여 구현하면 되는 문제이다. 우선순위 큐에 대한 자세한 설명은 필자가 이전에 정리해둔 내용이 있으니 참고하도록 하자.

https://jhoon-study.tistory.com/75

 

[C++] STL priority_queue 사용법

priority queue C++ STL 컨테이너 중 하나로, 내부적으로 힙 자료구조로 구현된 우선순위 큐를 보다 편하게 사용할 수 있게 해준다. 기존의 스택이나 큐 같은 자료구조의 경우, 먼저 들어왔는지 나중에

jhoon-study.tistory.com

해당 자료구조를 사용하는 방법을 잘 숙달하고 있다면, 전혀 부담없이 풀어낼 수 있다. 우선순위 큐는 이러한 문제 말고도 가중치 있는 양방향 그래프에서 최단경로를 찾는 알고리즘은 다익스트라 알고리즘을 구현할때 쓰이는 자료구조이니 잘 숙달해두도록 하자.


#include <iostream>
#include <queue>

using namespace std;

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

    int N;
    cin >> N;

    priority_queue<int> pq;
    while (N--) {
        int a;
        cin >> a;

        if (a==0) {
            if (pq.empty()) cout << 0 << '\n';
            else {
                cout << -pq.top() << '\n';
                pq.pop();
            }
        }
        else {
            pq.push(-a);
        }
    }

    return 0;
}

728x90

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] #3197 백조의 호수  (0) 2024.07.08
[BOJ] #2630 색종이 만들기  (0) 2024.03.03
[BOJ] #11659 구간 합 구하기 4  (0) 2024.03.02
[BOJ] #13023 ABCDE  (0) 2024.02.26
[BOJ] #1068 트리  (0) 2024.02.26