백준 1946 신입 사원 / C++

이유참치·2025년 7월 31일

백준

목록 보기
40/249

문제 : 1946

풀이 point

신입 사원을 뽑기 위해서는 다른 한사람보다 면접 or 필기 등수가 하나라도 높으면 된다.(등수는 1 ~ N까지 1에 가까워질수록 등수가 높다)

풀이 방법

일단 서류 심사 성적을 기준으로 입력받은 값을 정렬한다. 만약 다음 등수 사람의 면접 등수가 그 전 사람의 면접 등수보다 낮으면 탈락이다. (현재 서류 기준으로 정렬되어 있기 때문에 면접 등수가 떨어지면 필기, 면접 둘다 등수가 떨어지므로 탈락이다.)

코드

//백준 1946 신입 사원

#include <iostream>
#include <algorithm>

int main (){

    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);
    std::cout.tie(NULL);

    int T;
    std::cin >> T;
    while(T--){
        int N;
        std::pair<int, int> arr[100'001];
        std::cin >> N;
        for(int i{1}; i<=N; ++i){
            std::cin >> arr[i].first >> arr[i].second;
        }
        
        std::sort(arr+1, arr+N+1);

        int ans{1}; int tmp{arr[1].second};
        for(int i{2}; i<=N; ++i){
            if(tmp >= arr[i].second){
                tmp = arr[i].second;
                ++ans;
            }
        }
        std::cout << ans << '\n';
    }

    return 0;
}

2025-03-13T05:08:23.602Z

profile
임아리 - 대학생

0개의 댓글