그리디 알고리즘 . . . 쉽지않다
실버 1 짜리 문제 !
사실 근데 sort만 잘해도 . . 금방 푸는 듯
그걸 못해서 문제지만 ㅎ
회의마다 시작 시간, 종료 시간을 주고,
가장 많은 회의를 할 수 있는 방법을 찾는 문제
간단하게, 끝나는 시간을 순서로 sort하고나서
sort 후 가장 처음 있는 회의 (가장 끝나는 시간이 빠른 회의)
를 잡아두고
그다음 것들을 보면서 (종료시간 순으로 sort 되어 있으니 .)
종료 시간 이후에 시작하는 친구들을 납치
이런 비슷한 문제 진짜 많으니 .. 잘 익혀두자
여기서 배운 건, sort를 pair를 가지고 한다는거!
pair의 first를 보고 sort를 하니까 신경 써서 잘 넣어주자
//
// Created by 신성준 on 2023/03/11.
//
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
pair<int, int> arr[1000001];
for(int i = 0; i < N; i++){
int start, end;
cin >> start;
cin >> end;
arr[i] = {end, start};
}
sort(arr, arr+N);
int end = arr[0].first;
int cnt = 1;
for(int i = 1; i < N; i++){
if(end <= arr[i].second){
cnt++;
end = arr[i].first;
}
}
cout << cnt;
}