1927번: 최소 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
그렇다.. prioriy_queue를 사용하면 최대 힙이 기본적으로 작동하는 자료구조를 이용할 수 있다
[C++] <queue> 라이브러리, 우선순위 큐, 최대 힙, 최소 힙 :: Feel Coding (tistory.com)
[C++] <queue> 라이브러리, 우선순위 큐, 최대 힙, 최소 힙
C++에서 우선순위 큐를 구현하려면 라이브러리를 사용하면 된다. 따라서 #include 코드를 써줘야 한다. priority_queue - C++ Reference container_typeThe second template parameter (Container)Type of the underlying container www.
breakcoding.tistory.com
다만 여기서 기본 값이 최대 힙이니까, 방향을 오름차순으로 바꿔주면 최소힙을 구현할 수 있음
값이 작을 수록 우선순위가 높은 우선순위 큐
를 만드는 것
priority_queue<int, vector<int>, greater<int>> q;
여기서 less가 오름차순으로 방향을 바꿔주는 것!
사실 시간초과 났었는데
입출력 시간을 줄여주는 제일 첫 두 줄을 추가해주니까 해결됐다
이제는 잊지말고 이거 계속 써야지 ..
#include <iostream>
#include <queue>
using namespace std;
int main()
{
cin.tie(NULL);
cin.sync_with_stdio(false);
int n, m;
cin >> n;
priority_queue<int, vector<int>, greater<int>> pq;
for(int i=0; i<n; i++){
cin >> m;
if(m == 0){
if(pq.empty()) cout << 0 <<"\n";
else {
cout <<pq.top() <<"\n";
pq.pop();
}
}
else {
pq.push(m);
}
}
return 0;
}
'‡ CODING TEST STUDY ‡ > º 백준' 카테고리의 다른 글
[백준 10870번 C++] 피보나치 수 5 (1) | 2023.09.20 |
---|---|
[백준 11286번 C++] 절대값 힙 (0) | 2023.09.17 |
[백준 11866번 C++] 요세푸스 문제 0 (0) | 2023.09.16 |
[백준 1966번 C++] 프린터 큐 (0) | 2023.09.15 |
[백준 10866번 C++] 덱 (0) | 2023.09.13 |