알고리즘/백준

[백준/c++] 1946번: 신입 사원

녕이 2022. 7. 25. 17:19
728x90

 

https://www.acmicpc.net/problem/1946

 

1946번: 신입 사원

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성

www.acmicpc.net

 

 

처음엔 모든 사람들을 비교해봐야 했는데 문제를 제대로 이해하면 다르게 진행된다..

둘 중에 하나만 크면 통과다. 그러니까 일단 서류 통과를 기준으로 정렬하고 서류 통과 1등을 뽑고 

인터뷰점수로 더 높은 점수의 사람을 채용하도록 한다. 더 높았던 그 점수는 다시 업데이트된다.

 

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

int main(){
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int t;
    pair<int, int> p[100001];
    cin >> t;
    
    while(t--){
        int n;
        cin >> n;
        
        for(int i=0; i<n; i++) cin >> p[i].first >> p[i].second;
        
        sort(p, p+n);
        
        int ans = 1;
        int interview = p[0].second; //서류심사 1위인 사람의 인터뷰 점수
        
        for(int i=1; i<n; i++){
            if(p[i].second < interview){
                ans++;
                interview = p[i].second;
            }
        }
        cout << ans << '\n';
    }
    return 0;
}

 

 

 

728x90