본문 바로가기

c++/Baekjoon Online

백준 1946 : 신입사원 C++

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

 

1946번: 신입 사원

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

www.acmicpc.net

풀이

1. 점수가 아니라 순위를 입력 받는거니까 조심

2. 서류 순위 순으로 정렬

3. 서류 1등은 당연히 뽑는거니까 cnt = 1로 초기화하고,

 루프

4.면접 점수가 서류 1등보다 높은놈을 찾아냄

 -> 이제 이놈의 면접점수보다 높은놈을 이어서 찾아서 골라내면 됨

 

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

bool cmp(pair<int, int>a, pair<int, int> b)
{
	return a.first < b.first;
}

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

	int n;
	int tmp_1, tmp_2;
	vector<pair<int, int> > people;
	for (int tt = 0; tt < tc; tt++)
	{
		int cnt = 1;
		people.clear();

		cin >> n;
		for (int i = 0; i < n; i++)
		{
			cin >> tmp_1 >> tmp_2;
			people.push_back(make_pair(tmp_1, tmp_2));
		}
		sort(people.begin(), people.end(),cmp);

		int tmp = people[0].second;
		for (int i = 1; i < n;i++)
		{
			if (people[i].second < tmp)
			{
				cnt++;
				tmp = people[i].second;
			}
		}

		cout << cnt << endl;
	}

}

'c++ > Baekjoon Online' 카테고리의 다른 글

백준 8980 : 택배 C++  (0) 2021.06.27
백준 1507 : 궁금한 민호 C++  (0) 2021.06.27
백준 1700 : 멀티탭 스케줄링 C++  (0) 2021.06.24
백준 2579 : 계단 오르기 C++  (0) 2020.11.20
백준 : 다리 만들기 2 c++  (0) 2020.11.19