문제

문제 링크

어떻게 접근할 것인가?

  • 첫번째 순위와 두번째 순위가 있다.
  • 일단 첫번째 순위로 솔팅한 다음에 위에 있는 애들 중에 베스트를 저장해놓고 비교해서 두번째 순위보다 작으면 그 값을 맥스로 저장하고 결과값을 하나 추가 시켜준다.

코드

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    vector<int> answers;
    int t, n, g1, g2;
    vector<pair<int, int>> v;

    cin >> t;
    for(int i = 0; i < t; i++){
        cin >> n;
        v.clear();
        int g2_max = 100000, answer = 0;

        for(int j = 0; j < n; j++){
            cin >> g1 >> g2;
            v.push_back(make_pair(g1, g2));
        }

        sort(v.begin(), v.end());

        for(int j = 0; j < n; j++){
            if(v[j].second <= g2_max){
                g2_max = v[j].second;
                answer ++;
            }
        }
        answers.push_back(answer);
    }
    for(int i = 0; i < answers.size(); i++)cout << answers[i]<<endl;
}