728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/138477
문제 풀이 방법
단순 구현 문제로 앞의 k 개 만큼은 명예의 전단 배열에 넣어도 되지만, 그 이후의 점수는 명예의 전당에 이미 들어가 있는 점수들과 비교한 뒤 score[i]의 점수 보다 작아지기 시작하는 점수를 찾아내 뒤로 밀어내야한다.
이때 findIndex 메서드를 이용해 위치를 찾는데 만약 -1을 반환해 조건에 맞는 점수가 없으면 다음으로 넘어간다.
완성된 코드
const solution = (k, score) => {
let list = [];
let answer = [];
for(let i = 0; i < score.length; i++){
if(list.length < k){
list.push(score[i]);
list.sort((a, b) => b - a);
}
else{
const idx = list.findIndex((e) => e < score[i]);
if(idx !== -1){
list.splice(idx, 0, score[i]);
list.pop();
}
}
answer.push(list[list.length - 1]);
}
return answer;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 1Level / 연습문제 / 카드 뭉치 (0) | 2023.10.27 |
---|---|
[JS] 2Level / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / 행렬 테두리 회전하기 (0) | 2023.10.26 |
[JS] 3Level / 연습문제 / 하노이의 탑 (0) | 2023.10.23 |
[JS] 3Level / 연습문제 / 숫자 타자 대회 (1) | 2023.10.20 |
[JS] 1Level / 연습문제 / 추억 점수 (0) | 2023.10.19 |