반응형
코드
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
struct Data
{
int money;
int when;
Data(int a, int b)
: money(a), when(b)
{}
bool operator < (Data& b)
{
return when > b.when;
}
};
int main(void)
{
int n, m, d, i, j, res = 0, max = -2147000000;
vector<Data> T;
priority_queue<int> pQ;
cin >> n;
for (i = 0; i < n; ++i)
{
cin >> m >> d;
T.emplace_back(Data(m, d));
if (d > max) max = d;
}
sort(T.begin(), T.end());
j = 0;
// i의 범위 == 강연 날짜
for (i = max; i >= 1; --i)
{
for (; j < n; ++j)
{
if (T[j].when < i) break;
pQ.push(T[j].money);
}
if (!pQ.empty())
{
res += pQ.top();
pQ.pop();
}
}
cout << res << endl;
return 0;
}
출력 결과
채점 결과
어렵다! 다시 풀어 봐야겠다...
해당 포스트는 'it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비' 강의를 수강하며 개인 백업용으로 메모하였습니다.
인프런: https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98#
반응형