본문 바로가기

알고리즘

[백준] 1946번 신입 사원 C++ 문제풀이

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

 

1946번: 신입 사원

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

www.acmicpc.net

문제 풀이

일단 서류 심사 결과를 기준으로 정렬한 뒤, 서류심사 결과가 1등인 사람부터의 면접성적을 기준으로 min_value를 설정해 서류심사의 성적이 낮은사람의 면접성적이 min_value 보다 낮으면 count를 하고 min_value를 수정했다.

 

 

소스 코드

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

int main() {
	int T;
	cin >> T;
	for (int i = 0; i < T; i++) {
		vector<pair<int, int>> docu_inter;
		int N;
		cin >> N;
		
		for (int j = 0; j < N; j++) {
			int docu, inter;
			cin >> docu >> inter;
			docu_inter.push_back(make_pair(docu, inter));
		}
		
		sort(docu_inter.begin(), docu_inter.end());

		int min_value = docu_inter[0].second;
		int cnt = 1;
		for (int j = 1; j < N; j++) {
			int value = docu_inter[j].second;
			if (min_value > value) {
				cnt += 1;
				min_value = value;
			}
		}
		cout << cnt << '\n';
	}
}