그리디를 활용한 문제이다. 먼저 서류심사 성적 순위 순으로 정렬을 한 후, 반복문을 돌면서 면접 성적 순위를 비교하여 순위가 더 높을 경우 카운트를 해주었다. 알고보면 간단한 문제였지만 문제를 이해하지 못해서 시간이 오래 걸렸다....
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
typedef pair<int, int> pii;
int N;
vector<pii> grade;
void init() {
grade.clear();
}
void solution() {
sort(grade.begin(), grade.end());
int res = 1;
int interview = grade[0].second;
for (int i = 1; i < N; i++) {
if (interview > grade[i].second) {
res++;
interview = grade[i].second;
}
}
cout << res << endl;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int T;
cin >> T;
while (T--) {
init();
cin >> N;
int doc, interview;
for (int i = 0; i < N; i++) {
cin >> doc >> interview;
grade.push_back({ doc, interview });
}
solution();
}
return 0;
}