less than 1 minute read

사용언어

Visual studio 2019 C++

생각하기

우선순위 큐를 사용해서 풀어보자

우선순위 큐란 수를 여러개 넣어도 큰수를 앞으로 빼는 걸 말함!

쉽게 이해하려면.. 직접 넣어봐야된다

#include <iostream>
#include <queue>
using namespace std;

int main() {
	priority_queue<int> pq;
	pq.push(5);
	pq.push(3);
	pq.push(7);
	pq.push(1);

	cout << pq.top() << " ";
	pq.pop();
	cout << pq.top() << " ";
	pq.pop();
	cout << pq.top() << " ";
	pq.pop();
	cout << pq.top() << " ";
	pq.pop();
}
출력: 7 5 3 1
반례라기보단.. 거꾸로 있는 것도 생각해야 함!
3
19 20
12 19
1 12

[11000 풀이]

#include <iostream>
#include <queue>
#include <algorithm>

#define endl "\n"
using namespace std;

int n;
pair<int, int> p[200001];
priority_queue<int> pq;

int main() {
	cin >> n;

	for (int i = 0; i < n; ++i) {
		cin >> p[i].first >> p[i].second;
	}
	sort(p, p + n);

	pq.push(-p[0].second); 
	for (int i = 1; i < n; ++i) {
		if (-pq.top() <= p[i].first) {
			pq.pop();
			pq.push(-p[i].second);
		}
		else {
			pq.push(-p[i].second);
		}
	}

	cout << pq.size() << endl;
}

Categories:

Updated:

Comments