풀이
[문제 풀이]
이 문제는 선물을 가지고 있을 때, 항상 가치가 가장 큰 선물을 줄 수 있도록 구현하면 된다.
즉, 가치가 가장 큰 선물이라는 우선순위가 있으므로 priority queue를 이용하면 쉽게 문제를 풀 수 있다.
이를 이용해 아이디어를 정리하면 아래와 같다.
[아이디어 정리]
- priority queue를 이용해 선물의 가치가 가장 큰 게 먼저 나오도록 한다.
- n이 0일 경우 priority queue에 선물이 있는지 확인하고 선물이 있다면 가장 큰 선물을 준다.
- 만약 선물이 없다면 -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;
}
크리스마스 기념으로 크리스마스 관련 문제를 풀었다..
나도 선물 받고 싶은데 ㅜㅠ
크리스마스는 백준이랑;;
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준/C++] 새로운 하노이 탑 (No. 12906) (0) | 2025.01.17 |
---|---|
[백준/C++] 유아와 곰두리차(No. 20951, 새해 기념) (2) | 2025.01.01 |
[백준/C++] 벌집들 (No. 3805) (0) | 2024.12.25 |
[백준/C++] 다음 팰린드롬 수 (No. 1334) (0) | 2024.12.16 |
[백준/C++] 급상승 (No. 23978) (0) | 2024.12.15 |