728x90
난이도 : 실버 1
풀이 방법 :
문제가 살짝 헷갈렸긴했는데 문제의 의미는
한 사람의 서류등수와 면접등수가 어떠한 다른 사람의 두 등수에 둘 다 지면 안된다는 뜻
머튼 해결방법
pair배열을 선언하여, 서류랑 면접점수를 담게 하고,
서류점수를 기준으로 배열을 sort를 한 다음 면접점수에서 배열 순서대로 arr[i] < arr[i+1] 이면 i+1 의 인덱스를 가진 배열이 둘다 점수가 졌다는 의미이므로 cnt변수에 1씩더해준다.
답은 n-cnt를 출력하면 끝!
이제 n이 십만개고 시간제한이 2초이므로 nlogn이하로 풀어야 되는 문제였음 (n제곱이면 시간초과임 !)
코드 :
#include <iostream>
#include <algorithm>
using namespace std;
int t, n;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL), cout.tie(nullptr);
cin >> t;
while (t--) {
cin >> n;
pair<int, int> p[100002];
for (int i = 0; i < n; i++) {
cin >> p[i].first >> p[i].second;
}
sort(p, p + n);
int m = p[0].second;
int cnt = 0;
for (int i = 1; i < n; i++) {
m = min(m, p[i].second);
if (m < p[i].second) {
cnt++;
}
}
cout << n-cnt << endl;
}
}
728x90
'Algorithm > Solution' 카테고리의 다른 글
[백준] 1005번 ACM Craft(C++) (0) | 2022.05.10 |
---|---|
[백준] 2589번 보물섬 (C++) (0) | 2022.05.08 |
[백준] 7576 7569 토마토(C++) (0) | 2022.04.27 |
[백준] 8979 올림픽 C++ 코드 (0) | 2022.03.17 |
[백준] 11140번 - LOL(C++) (0) | 2021.09.28 |