본문 바로가기
[백준]

[BaekJoon/백준] 1927번 C++

by Hevton 2021. 3. 31.
반응형

최대 힙, 최소힙 이러한 용어가 쓰이는

힙정렬 알고리즘에 대한 문제였다.

 

부모의 값이 자식의 값보다 항상 크다 / 또는 작다. => 최대힙/최소힙

힙에서 부모와 자식 관계는 일정하지만, 형제 사이의 대소관계는 일정하지 않다.

 

 

C언어로 힙정렬을 구현했을 때의 코드를 살펴봤는데

진짜 기억이 하나도 안나고...이해도 안되고... 하 ... 쉬고싶다...

 

어느정도 감은 잡았는데, 문제를 구현하는데 있어서 끙끙대다가.. 풀이를 찾아봤다.

 

찾아보니 최소힙 / 최대힙 구현을

C++의 STL인 priority_queue 를 사용하여 구현할 수 있다고 한다.

참고 : twpower.github.io/93-how-to-use-priority_queue-in-cpp

 

 

이를 이용해서 구현해봤다.

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>

using namespace std;

int N, temp;
// priority_queue의 기본형. 3개의 인자를 받으며, 마지막 인자가 greater일 경우 최소힙 less인 경우 최대힙이다.
priority_queue<int, vector<int>, greater<int>> q;
int main() {
    
    ios::sync_with_stdio();
    cin.tie(NULL);
    
    
    cin >> N;
    
    while(N--) {

        cin >> temp;
        
        if(temp == 0) {
            if(q.size() == 0)
                cout << "0\n";
            else {
                cout << q.top() << '\n';
            q.pop();
            }
        }
        else {
            q.push(temp);
        }
    }
    
}

정말 간단하게 풀린다..

 

 

오늘은 정말 피곤하다...

힙을 직접 이용해서 풀어볼 시간도 꼭 필요할 것 같다.

 

반응형

'[백준]' 카테고리의 다른 글

[BaekJoon/백준] 7576번 C++  (0) 2021.04.02
[BaekJoon/백준] 2606번 C++  (0) 2021.04.01
[BaekJoon/백준] 1764번 C++  (0) 2021.03.30
[BaekJoon/백준] 1697번 C++  (0) 2021.03.28
[BaekJoon/백준] 1620번 C++  (0) 2021.03.26