profile image

L o a d i n g . . .

반응형

코드

#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#

 

it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비 - 인프런

알고리즘과 자료구조를 이용해 문제해결력을 기르는게 주 목적입니다. 초급 취업 ・ 이직 프로그래밍 언어 알고리즘 C++ 알고리즘 코딩 테스트 개발자취업 온라인 강의 알고리즘

www.inflearn.com

반응형
복사했습니다!