Algorithm

[백준] 신입 사원 1946번

salmon16 2021. 8. 20. 11:44

출처 : 1946번: 신입 사원 (acmicpc.net)

 

1946번: 신입 사원

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

www.acmicpc.net

풀이 방법

서류심사와 면접시험이 둘 다 어떤 사람보다 낮으면 채용되지 않는다고 문제에 설명되어 있다.

서류심사 등수 기준으로 정렬을 한 뒤 서류심사 1등은 무조건 채용된다. 서류심사 1등의 면접 등수를 

temp라는 변수에 저장한뒤 for문을 돌며 temp보다 좋은 등수를 받은 사람이 있으면 이 사람의 면접 등수를 

temp에 저장해주고 ans를 +1해준다 이 과정을 for문 끝까지 반복한다.

#include<bits/stdc++.h>
using namespace std;

int ans = 0;

bool cmp(pair<int, int> p1, pair<int, int> p2) {
    if (p1.first < p2.first) return true;
    else return false;
}
void f(vector<pair<int,int>> people) {
    sort(people.begin(), people.end(), cmp);
    int temp = people[0].second;
    for (int i = 0;i < people.size();i++) {
        if (temp >people[i].second) {
            ans++;
            temp = people[i].second;
        }
    }
}

int main(){
    int case_;
    cin >> case_;
    while(case_--) {
        int N;
        cin >> N;
        vector<pair<int,int>> people;
        for (int i = 0;i < N;i++) {
            int n1, n2;
            cin >> n1 >> n2;
            people.push_back(make_pair(n1, n2));
        }
        f(people);
        cout <<ans + 1<< endl;
        ans = 0;
    }
    return 0;
}

'Algorithm' 카테고리의 다른 글

[백준] 알파벳 1987번 (c++)  (0) 2021.09.09
[백준] 스타트 링크 5014번 (c++)  (0) 2021.09.07
[백준] 보물섬 2589번 (c++)  (0) 2021.08.09
[백준] 토마토 7576번 (c++)  (0) 2021.08.04
[백준] 정수 삼각형 1932번 (c++)  (0) 2021.08.02