[프로그래머스] lv3 인사고과
[출처 - 프로그래머스 lv3 인사고과]
https://school.programmers.co.kr/learn/courses/30/lessons/152995
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
제한 사항
입출력 예
전체 코드
/*
근무태도점수 or 동료평가점수 둘 중 하나로 정렬
근무태도점수로 정렬했다면
1. 원호보다 동료평가 점수가 높은 사람이 있으면 탈락
2. 원호가 인센 대상 -> 순위 정해야함
2-1. 두 점수 합을 al에 넣고 정렬
3. 원호 점수 인덱스 반환
*/
import java.util.*;
class Solution {
public int solution(int[][] scores) {
int answer = 1;
// [근무 태도 점수, 동료 평가 점수]
// 완호 점수
int[] wanho = scores[0];
int wanho_sum = wanho[0] + wanho[1];
Arrays.sort(scores, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
// 태도 점수가 같으면 동료평가점수를 오름차순으로 정렬
if(o1[0] == o2[0]) {
return o1[1] - o2[1];
}
return o2[0] - o1[0];
}
});
int max = Integer.MIN_VALUE;
for(int i = 0; i < scores.length; i++) {
// 인센티브 받는 애들
if(scores[i][1] >= max) {
max = Math.max(max, scores[i][1]);
if(wanho_sum < scores[i][0] + scores[i][1]) {
answer++;
}
} else if(scores[i][1] < max) { // 인센티브를 못 받는 사람들
if(wanho[0] == scores[i][0] && wanho[1] == scores[i][1]) {
return -1;
}
}
}
return answer;
}
}