본문 바로가기
Algorithm/BAEKJOON

[백준/C++] 크리스마스 선물 (No.14235)

by code_pie 2024. 12. 26.
 

 

풀이

 

[문제 풀이]

 

이 문제는 선물을 가지고 있을 때, 항상 가치가 가장 큰 선물을 줄 수 있도록 구현하면 된다.

즉, 가치가 가장 큰 선물이라는 우선순위가 있으므로 priority queue를 이용하면 쉽게 문제를 풀 수 있다.

 

이를 이용해 아이디어를 정리하면 아래와 같다.

 

 

[아이디어 정리]

  1. priority queue를 이용해 선물의 가치가 가장 큰 게 먼저 나오도록 한다.
  2. n이 0일 경우 priority queue에 선물이 있는지 확인하고 선물이 있다면 가장 큰 선물을 준다.
  3. 만약 선물이 없다면 -1을 출력한다.

 

Code

 

 

#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <string>
#include <cmath>
#include <fstream>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int T,n,s;
	cin >> T;
	priority_queue<int> pq;
	for (int tc = 1; tc <= T; tc++)
	{
		cin >> n;
		if (n!=0)
		{
			for (int i=0; i<n; i++)
			{
				cin >> s;
				pq.push(s);
			}
		}
		else
		{
			if (pq.empty()) {
				cout << -1<<"\n";
			}
			else
			{
				cout<<pq.top()<<"\n";
				pq.pop();
			}
		}
	}
	return 0;
}

 

크리스마스 기념으로 크리스마스 관련 문제를 풀었다..

나도 선물 받고 싶은데 ㅜㅠ

크리스마스는 백준이랑;;

 

 

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

반응형