Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- factory
- builder
- java
- Google OAuth
- Spring
- Volatile
- spring security
- middleware
- 일급 컬렉션
- lombok
- Dependency Injection
- nestjs
- OAuth 2.0
- 일급 객체
- synchronized
Archives
- Today
- Total
HJW's IT Blog
[Programmers] 인사고과 [C++] 본문
https://school.programmers.co.kr/learn/courses/30/lessons/152995
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 분석 및 접근 방식
이 문제는 직원들의 점수를 기반으로 인센티브를 지급할 때, 완호의 순위를 계산하는 것입니다. 여기서 중요한 점은 두 가지입니다:
- 인센티브 자격: 완호가 다른 직원에 비해 두 점수 모두 낮은 경우가 한 번이라도 있다면 인센티브를 받을 수 없습니다.
- 석차 계산: 인센티브를 받을 수 있는 직원 중 점수 합이 높은 순으로 석차를 매기며, 동석차가 존재할 경우 그 수만큼 다음 석차는 건너뛰게 됩니다.
- 완호의 인센티브 자격 판단:
- 완호와 다른 모든 직원의 점수를 비교하여, 완호가 다른 직원보다 두 점수가 모두 낮은 경우가 있으면 인센티브를 받을 수 없으므로 1을 반환합니다.
- 직원들의 점수 합을 기준으로 정렬:
- 완호를 제외한 모든 직원을 점수 합을 기준으로 내림차순으로 정렬합니다. 이때, 점수 합이 같다면 같은 순위로 처리합니다.
- 완호의 석차 계산:
- 정렬된 리스트에서 완호의 점수 합보다 높은 점수를 가진 직원 수를 세어 순위를 결정합니다.
- 동석차 처리:
- 동석차가 발생할 경우, 그만큼 다음 순위는 건너뛰어야 합니다.
#include <bits/stdc++.h>
using namespace std;
int solution(vector<vector<int>> scores) {
int answer = 1;
int wan_a = scores[0][0], wan_b = scores[0][1];
int wan_sum = wan_a + wan_b;
// 완호 제외 나머지 점수들만 정렬
sort(scores.begin() + 1, scores.end(), [](vector<int>& a, vector<int>& b) {
return a[0] + a[1] > b[0] + b[1];
});
// 완호의 인센티브 자격 체크
for (int i = 1; i < scores.size(); i++) {
if (wan_a < scores[i][0] && wan_b < scores[i][1]) {
return -1; // 인센티브 자격 없음
}
}
// 완호의 석차 계산
for (int i = 1; i < scores.size(); i++) {
int cur_sum = scores[i][0] + scores[i][1];
if (cur_sum > wan_sum) {
answer++;
} else {
break;
}
}
return answer;
}
- 합산 점수 정렬의 이유
- 석차 계산의 단순화 → 점수 합이 높은 순서대로 정렬해 두면, 정렬된 리스트에서 순서대로 확인하면서 쉽게 석차를 계산할 수 있다.
- 인센티브 자격 판단 단순화
- 효율적인 동석차 처리
'Algorithm' 카테고리의 다른 글
[프로그래머스] 부대 복귀 [C++] (2) | 2024.09.05 |
---|---|
[Programmers] 표현 가능한 이진트리 [C++] (0) | 2024.09.03 |
[Programmers] 택배 배달과 수거하기 (0) | 2024.09.02 |
[Programmers] 이모티콘 할인 행사 [C++] (3) | 2024.09.02 |
[Programmers] 숫자 변환하기 [c++] (0) | 2024.08.30 |