뭔가 그리드로 할 수 있을거같은디... 한번 시도는 해보자!

여기서도 제일 빨리 끝나는거가

1,4

그다음 4보다 큰 시작 중 제일 빨리 끝나는게 5,7

그다음 7보다 큰 시작 중 제일 빨리 끝나는게 8,11

그다음이 12 14 이케 4개니까

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool comp(pair<int, int>&a, pair<int, int>&b){
    if(a.second == b.second) return a.first < b.first;
    else return a.second < b.second;
} //일찍 끝나는 시간 순 정렬

int main(){
    int N, st, ed;
    cin >> N;
    vector<pair<int,int>>v;
    while(N--){
        cin >> st >> ed;
        v.push_back({st,ed});
    }
    sort(v.begin(), v.end(),comp);
    int ans = 0; ed = 0;
    for(auto x : v){
        if(x.first >= ed){
            ans++; ed = x.second;
        }
    }
    cout << ans << "\n";
    return 0;
}

 

성공 ★

 

+ Recent posts