Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 애니메이션
- WinAPI
- directx12 그리기 연산2
- 뱀과사다리게임
- 11286번
- unrealengine
- 다음소수
- 백준 1260 c++
- 백준
- 백준 24444 c++
- DirectX12
- 4134번
- 그리기 연산
- 드래곤플라이트 모작
- 2d 박스충돌
- C++
- 루트서명
- 바이토닉 수열
- 백준 c++ 24479번
- 2075번
- BFS
- 2565번
- dx12 정리
- dx12
- 다익스트라
- lis응용
- 24779
- Unreal
- Perforce
- 랜더링 파이프라인
Archives
- Today
- Total
game-1 님의 블로그
[백준] 1927번: 최소 힙 C++ 본문



설명)

최소힙은 완전 이진트리로 구현된 데이터 구조이며, 우선순위 큐를 이용하면 쉽게 구현할 수 있습니다.
특징은 다음과 같습니다.
특징)
루트 노드(Top):
항상 힙의 최솟값을 유지합니다.
부모-자식 관계:
부모 노드의 값은 항상 자식 노드의 값보다 작거나 같아야 합니다.
즉, 트리의 모든 부모-자식 관계에서 부모 ≤ 자식이 성립합니다.
정렬 상태:
힙은 전체적으로 정렬된 구조는 아니지만, 최솟값을 빠르게 찾는 데 최적화된 형태로 정렬되어 있습니다.
또 앞으로 글을 작성하겠지만 이 우선순위 큐는 다익스트라 알고리즘에서도 사용되기 때문에 지금 사용법을 잘 익혀 두면 좋습니다.
코드는 다음과 같습니다.
코드)
#include <iostream>
#include <queue>
using namespace std;
int main() {
cin.tie(0);
ios::sync_with_stdio(0);
int n;
cin >> n;
priority_queue<int, vector<int>, greater<int>> pq;
while (n--) {
int x;
cin >> x;
if (x == 0) {
if (pq.empty()) {
cout << 0 << '\n';
}
else {
cout << pq.top() << '\n';
pq.pop();
}
}
else {
pq.push(x);
}
}
}

'백준 문제풀이' 카테고리의 다른 글
| [백준] C++ 11054번:가장 긴 바이토닉 부분 수열 (2) | 2025.01.10 |
|---|---|
| [백준] C++ 11286번:절댓값 힙 (1) | 2025.01.09 |
| [백준] 7562번 C++ 나이트의 이동 (0) | 2025.01.04 |
| [백준] C++ 2178번: 미로 탐색 (0) | 2025.01.03 |
| [백준] C++ 1012번: 유기농 배추 BFS (1) | 2025.01.02 |