본문 바로가기
코딩테스트_백준풀이

신입사원 #1946 c++ 풀이

by wanna_dev 2023. 11. 22.

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

 

1946번: 신입 사원

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

www.acmicpc.net

 

 

dp를 어느정도 감을잡고 greedy를 푸는 중이다.

 

1 4

2 3

3 2

4 1

5 5 

로 sort후, 뽑힌 사람들을 확인하니 두번째 요소에 대해 내림차순인 것들만 count 해주면 된다.

솔직히 이게 왜 greedy인지 모르겠다.

 

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>

using namespace std;

int main() {


	int T;
	cin >> T;
	vector<pair<int, int>> v;
	while (T--) {
		int n;
		cin >> n;
		for (int i = 0; i < n; i++) {
			int a, b;
			cin >> a >> b;
			v.push_back(make_pair(a, b));

		}
		sort(v.begin(), v.end());
		int cnt = 1;
		int k = v[0].second;
		for (int i = 0; i < v.size()-1; i++) {
			if (k > v[i + 1].second) {
				k = v[i + 1].second;
				cnt++;
			}
		}
		cout << cnt << endl;
		v.clear();
	}

	return 0;
}

'코딩테스트_백준풀이' 카테고리의 다른 글

로프 #2217 c++ 풀이  (0) 2023.11.22
행렬 #1080 c++ 풀이  (0) 2023.11.22
잃어버린 괄호 #1541 c++ 문제풀이  (0) 2023.11.22
주짓수 #15724 c++ 풀이  (1) 2023.11.20
포도주 시식 #2156 c++ 풀이  (0) 2023.11.15