[자바 공부] 인사고과
문제
문제 설명
완호네 회사는 연말마다 1년 간의 인사고과에 따라 인센티브를 지급합니다. 각 사원마다 근무 태도 점수와 동료 평가 점수가 기록되어 있는데 만약 어떤 사원이 다른 임의의 사원보다 두 점수가 모두 낮은 경우가 한 번이라도 있다면 그 사원은 인센티브를 받지 못합니다. 그렇지 않은 사원들에 대해서는 두 점수의 합이 높은 순으로 석차를 내어 석차에 따라 인센티브가 차등 지급됩니다. 이때, 두 점수의 합이 동일한 사원들은 동석차이며, 동석차의 수만큼 다음 석차는 건너 뜁니다. 예를 들어 점수의 합이 가장 큰 사원이 2명이라면 1등이 2명이고 2등 없이 다음 석차는 3등부터입니다.
각 사원의 근무 태도 점수와 동료 평가 점수 목록 scores
이 주어졌을 때, 완호의 석차를 return 하도록 solution 함수를 완성해주세요.
제한 사항
- 1 ≤
scores
의 길이 ≤ 100,000 scores
의 각 행은 한 사원의 근무 태도 점수와 동료 평가 점수를 나타내며 [a, b] 형태입니다.scores
[0]은 완호의 점수입니다.- 0 ≤ a, b ≤ 100,000
- 완호가 인센티브를 받지 못하는 경우 -1을 return 합니다.
-
입출력 예시
입출력 예
scores | result |
---|---|
[[2,2],[1,4],[3,2],[3,2],[2,1]] | 4 |
입출력 예 설명
5 번째 사원은 3 번째 또는 4 번째 사원보다 근무 태도 점수와 동료 평가 점수가 모두 낮기 때문에 인센티브를 받을 수 없습니다. 2 번째 사원, 3 번째 사원, 4 번째 사원은 두 점수의 합이 5 점으로 최고점이므로 1 등입니다. 1 등이 세 명이므로 2 등과 3 등은 없고 1 번째 사원인 완호는 두 점수의 합이 4 점으로 4 등입니다.
해결방안
solution#1
오류
처음에는 계속 84점이 나오며 오류가 났었다.
하지만 주석까지 꼼꼼히 달아주며 하나씩 확인 해본 문제라 오류를 찾을 수 없다 판단하고 다른 분들이 푼 풀이를 보고 깨닳았다.
바로 근무 태도 점수로 내림차순을 진행할 때 동점이면
동료 평가 점수를 오름차순으로 정렬을 해주어야 뒤에
for문을 돌릴 때 높은 동료평가 점수부터 비교가 되기 때문이었다.
접근방법
문제는 단순했다. 점수를 비교하고 근무 태도 점수, 동료 평가 점수 둘 다 낮으면 인센티브를 못 받고 받을 수 있는 사람들 중에 완호의 등수를 구하는 문제이다.
근무 태도 점수 또는 동료 평가 점수 중 하나를 내림차순으로 정렬하고
다른 하나는 앞에 와 비교하여 더 낮을 경우 무조건 두 평가 모두 낮아지는 경우이니
제외해주면 되는 방식으로 해결해주면 되었다.