본문 바로가기
BaekJoon/C++

1946 : 신입 사원 (C++)

by GrayChoi 2021. 2. 5.
반응형

 

1946번: 신입 사원

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

www.acmicpc.net


pair 배열을 사용하여 두가지 값을 한번에 받고

sort함수를 이용하여 정렬을 한다.

그 다음 문제 조건인 '다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다'를

이용하여 문제를 해결한다.

즉 첫 번째 지원자를 이용하여 다음 지원자와 비교를 하고

만약 두 번째 지원자가 첫 번째 지원자와 비교를 했을 때 선발된다면

비교 값을 두 번째 지원자의 값으로 바꾸고 카운팅한다.

#include<iostream>
#include<algorithm>

using namespace std;

int main() {
    int test_case;
    cin >> test_case;

    for(int T = 0; T < test_case; T++) {
        int N;
        cin >> N;

        pair<int, int> p[N];

        for(int i = 0; i < N; i++) {
            cin >> p[i].first >> p[i].second;
        }

        sort(p, p + N);

        int cnt = 1;
        int a, b;
        a = p[0].first;
        b = p[0].second;

        for(int i = 1; i < N; i++) {
            if(p[i].first > a && p[i].second < b) {
                cnt++;
                a = p[i].first;
                b = p[i].second;
            }
        }

        cout << cnt << endl;
        
    }
    
    return 0;
    
}

 

반응형

'BaekJoon > C++' 카테고리의 다른 글

2576 : 홀수 (C++)  (0) 2021.02.05
2583 : 영역 구하기 (C++)  (0) 2021.02.05
2468 : 안전 영역 (C++)  (0) 2021.02.04
7576 : 토마토 (C++)  (0) 2021.02.04
4963 : 섬의 개수 (C++)  (0) 2021.02.04

댓글