300x250
1. 제목
- 백준 1946 신입사원
- BOJ 1946 신입사원
문제 링크 : 1946번: 신입 사원 (acmicpc.net)
2. 풀이 과정
서류심사 성적으로 이미 한번 정렬을 했기 때문에 N번째 지원자보다 서류심사 성적이 높은 지원자들 중 면접 점수가 가장 높은지 체크하는 것
1. 서류심사 성적으로 먼저 지원자를 정렬한다.
2. minScore2 값에 N번째 지원자 중 가장 면접 점수가 높은 점수를 저장
3. N번째 지원자가 N번째 지원자 중 가장 면접 점수가 높다면 합격
3. 코드
// 서류심사 성적으로 이미 한번 정렬을 했기 때문에 N번째 지원자보다 서류심사 성적이 높은 지원자들 중 면접 점수가 가장 높은지 체크하는 것
//
// 1. 서류심사 성적으로 먼저 지원자를 정렬한다.
// 2. minScore2 값에 N번째 지원자 중 가장 면접 점수가 높은 점수를 저장
// 3. N번째 지원자가 N번째 지원자 중 가장 면접 점수가 높다면 합격
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Employee
{
int score1;
int score2;
};
bool Compare(Employee e1, Employee e2)
{
return e1.score1 < e2.score1;
}
int main()
{
int T;
scanf("%d", &T);
vector <Employee> employees;
vector <int> result;
for (int t = 0; t < T; t++)
{
int N;
scanf("%d", &N);
for (int n = 0; n < N; n++)
{
int score1, score2;
scanf("%d %d", &score1, &score2);
employees.push_back({ score1, score2 });
}
// 1. 서류심사 성적으로 먼저 지원자를 정렬한다.
sort(employees.begin(), employees.end(), Compare);
int minScore2 = employees[0].score2;
int passer = 1;
for (int i = 1; i < N; i++)
{
// 2. minScore2 값에 N번째 지원자 중 가장 면접 점수가 높은 점수를 저장
// 3. N번째 지원자가 N번째 지원자 중 가장 면접 점수가 높다면 합격
if (employees[i].score2 < minScore2)
passer++;
minScore2 = min(minScore2, employees[i].score2);
}
result.push_back(passer);
employees.clear();
}
for (int t = 0; t < T; t++)
printf("%d \n", result[t]);
return 0;
}
300x250
'<C++ 백준 BOJ> > 그리디' 카테고리의 다른 글
[백준 BOJ15903] 카드 합체 놀이 (C++) (0) | 2023.07.11 |
---|---|
[백준 BOJ13305] 주유소 (C++) (0) | 2023.07.02 |
[백준 BOJ1789] 수들의 합 (C++) (0) | 2023.07.02 |
[백준 BOJ1026] 보물 (C++) (0) | 2023.07.02 |
[백준 BOJ2217] 로프 (C++) (0) | 2023.07.02 |