[C++] 백준 23757번: 아이들과 선물 상자
문제 링크
문제 요약
N개의 선물상자가 있고, M명의 아이들이 있다. 아이들은 순서대로 선물이 가장 많이 들어있는 상자에서부터 원하는만큼 선물을 가져간다. 만약 상자에 선물이 부족하면 아이들은 실망하게 된다. 아이들이 선물을 가져갈때 실망하는 아이가 있는지 알아내야 한다.
접근 방법
해야할게 너무 자명한 문제였습니다. 상자에 들어있는 선물의 수를 우선순위큐에 넣어줍니다. 그리고 아이들이 원하는 선물의 양만큼 순서대로 우선순위큐의 top에서 뺀 다음에 다시 큐에 넣어줍니다. 만약 top보다 아이들이 원하는 선물이 더 크다면 답은 0이 되고, 한번이라도 그렇게 되지 않는다면 답은 1이 됩니다.
코드
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, m;
cin >> n >> m;
priority_queue<int> pq;
for (int i = 0; i < n; i++)
{
int c;
cin >> c;
pq.push(c);
}
bool flag = true;
for (int i = 0; i < m; i++)
{
int w;
cin >> w;
if (pq.top() >= w)
{
pq.push(pq.top() - w);
pq.pop();
}
else
flag = false;
}
cout << (flag ? 1 : 0);
return 0;
}
Author And Source
이 문제에 관하여([C++] 백준 23757번: 아이들과 선물 상자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@beclever/C-백준-23757번-아이들과-선물-상자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)