반응형
https://school.programmers.co.kr/learn/courses/30/lessons/152995
인사고과 문제
태도 점수와 평가 점수를 비교해서 인센티브를 몇 등으로 받을 수 있는지 찾는 문제
#사용 알고리즘
정렬
그리디(greedy)
📌문제 접근 포인트
1. 태도 점수와 평가 점수를 고려 후, 점수의 합으로 순위를 찾기 위해 우선 태도 점수를 기준으로 내림차순, 평가를 기준으로 오름차순 정렬해주자. 이렇게 정렬하면 태도 점수로 순위가 고정이 되므로 평가 점수만 고려해주면 되는 문제가 된다.
2. 조건에 맞게 완호의 점수가 2가지 모두 낮은 경우가 있다면 -1을 반환하게 해주자.
3. 평가 점수를 기준으로 갱신해주면서, 완호보다 점수가 높을 경우 순위를 1씩 올려주도록 구성하면 된다.
반응형
⚙ 내가 푼 정답 코드
import java.util.*;
class Solution {
public int solution(int[][] scores) {
int a = scores[0][0];
int b = scores[0][1];
int sum = a + b;
// 점수를 태도를 기준으로 내림차순, 평가를 기준으로 오름차순 정렬
Arrays.sort(scores, (x, y) -> x[0] == y[0] ? x[1] - y[1] : y[0] - x[0]);
int temp = 0;
int rank = 1;
for (int[] score : scores){
if (a < score[0] && b < score[1]){ // 완호의 점수가 둘 중 한번이라도 적어지면
return -1; // -1
}
// 이미 태도 기준으로 내림차순 되어있기에 평가 점수만 고려하면 된다.
if (temp <= score[1]){
temp = score[1];
if(score[0] + score[1] > sum){
rank++;
}
}
}
return rank;
}
}
반응형
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 연속된 부분 수열의 합(Java) (2) | 2024.04.10 |
---|---|
[프로그래머스] 리코쳇 로봇 (java) (0) | 2024.04.10 |
[프로그래머스] 미로 탈출 (java) (0) | 2024.04.09 |
[프로그래머스] 삼각 달팽이(Java) (0) | 2024.04.08 |
[프로그래머스] 광물 캐기 (Java) (0) | 2024.04.08 |
댓글