https://www.acmicpc.net/problem/1927
우선순위 큐를 활용하여 구현하면 되는 문제이다. 우선순위 큐에 대한 자세한 설명은 필자가 이전에 정리해둔 내용이 있으니 참고하도록 하자.
https://jhoon-study.tistory.com/75
해당 자료구조를 사용하는 방법을 잘 숙달하고 있다면, 전혀 부담없이 풀어낼 수 있다. 우선순위 큐는 이러한 문제 말고도 가중치 있는 양방향 그래프에서 최단경로를 찾는 알고리즘은 다익스트라 알고리즘을 구현할때 쓰이는 자료구조이니 잘 숙달해두도록 하자.
#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 |