본문 바로가기

알고리즘/백준풀이

[백준/C++] 1927번 최소 힙

문제링크

1927번 최소 힙

 

직전에 푼 최대 힙 문제의 변형버전

로직은 동일하지만 우선순위 큐를 오름차순, 내림차순으로 정렬할 수 있냐를 물어보는 문제

우선순위 큐를 선언할 때 우선순위 기준에 대하여 greater, less를 사용하여 오름차순과 내림차순을 정의할 수 있다.

priority_queue<int, vector<int>, greater<int>> greater_pq; // 오름차순(낮은 수부터)
priority_queue<int, vector<int>, less<int>> less_pq; // 내림차순(높은 수부터)

 

https://soorison-ks.tistory.com/20

 

[백준/C++] 11279번 최대 힙

문제링크11279번 최대 힙 간단하게 봤을 때 구현만 친다면 vector를 사용하여 최대값을 구한다음 처리해주는 식으로 구현했지만, 시간제한에 걸리게 됨.따라서 최대값을 구해줄 때 스택이나 큐와

soorison-ks.tistory.com

 

 

제출코드

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

using namespace std;

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

int main()
{
	int N = 0;
	int x = 0;

	vector<int> result;
	priority_queue<int, vector<int>, greater<int>> pq;

	cin >> N;

	for (int i = 0; i < N; i++)
	{
		cin >> x;

		if (x == 0)
		{
			if (!pq.empty())
			{
				result.push_back(pq.top());
				pq.pop();

			}
			else
			{
				result.push_back(0);
			}
		}
		else
		{
			pq.push(x);
		}
	}

	for (int i = 0; i < result.size(); i++)
	{
		cout << result[i] << "\n";
	}

	return 0;
}

'알고리즘 > 백준풀이' 카테고리의 다른 글

[백준/C++] 2178번 미로 탐색  (0) 2024.11.14
[백준/C++] 1931번 회의실 배정  (0) 2024.11.13
[백준/C++] 11279번 최대 힙  (2) 2024.11.02
[백준/C++] 2776번 암기왕  (1) 2024.10.26
[백준/C++] 1966번 프린터 큐  (1) 2024.10.26