728x90
문제
풀이
해당 문제의 경우 각 인원별로 합산 점수와 두가지 점수를 비교해 등수를 책정해야 하는 문제이다.
문제의 접근법으로 누적합 알고리즘을 사용했는데, 근무태도 점수를 우선으로 내리 차순 정리(동점일 경우 평가 점수를 기준으로 올림 차순 정리)를 한 뒤 등 수를 누적합 알고리즘을 적용해 구하는 방식으로 접근했다.
이때 주의할 점이 누적합을 구현할 때 이미 점수 배열이 근무 태도 점수를 기준으로 정렬되어 있기 때문에 이전의 인원의 근무 태도 점수는 다음 인원보다 무조건 높으며 누적합 알고리즘을 구현할 때는 평가 점수를 이용해 등수를 계산하는 것이 좋다.
또한 탈락되는 조건을 구현하는 것도 잊으면 안된다.
코드
function solution(scores) {
let wan = scores[0];
let state = 1;
let before = 0;
scores.sort((a, b) => {
if (a[0] === b[0]) return a[1] - b[1];
return b[0] - a[0];
});
for (let score of scores) {
if (score[0] > wan[0] && score[1] > wan[1]) return -1;
else if (before <= score[1]) {
if (score[0] + score[1] > wan[0] + wan[1]) {
state += 1;
}
before = score[1];
}
}
return state;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 길 찾기 게임 2019 KAKAO BLIND RECRUITMENT (0) | 2025.01.10 |
---|---|
[JS] 상담원 인원 (0) | 2024.12.05 |
[JS] 합승 택시 요금 (0) | 2024.12.02 |
[JS] 순위 (0) | 2024.11.28 |
[JS] 풍선 터트리기 (0) | 2024.11.27 |