https://www.acmicpc.net/problem/1931
1. 회의는 한번 시작하면 중간에 중단될 수 없으며
한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다.
2. 회의의 시작시간과 끝나는 시간이 같을 수도 있다.
이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.
두 조건으로보아 1 - 2 / 2 - 2로 이어질 수 있다.
또, 최소가 아닌 최대로 많은 회의 수를 구해야하므로 시작 시간이 아닌 종료 시간을 기준으로 계산한다.
(End_time <= Start_time)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<pair<int, int>> result;
int N;
int start, end;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> start >> end;
result.push_back(make_pair(end, start));
}
sort(result.begin(), result.end());
int End_time = result[0].first;
int count = 1;
for (int i = 1; i < N; i++) {
if (End_time <= result[i].second) {
End_time = result[i].first;
count++;
}
}
cout << count << endl;
return 0;
}