-
[프로그래머스 Level 1] 명예의 전당 (1) (JavaScript)Coding Test/JavaScript 2024. 11. 25. 16:39
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/138477
입출력 예
k score result 3 [10, 100, 20, 150, 1, 100, 200] [10, 10, 10, 20, 20, 100, 100] 4 [0, 300, 40, 300, 20, 70, 150, 50, 500, 1000] [0, 0, 0, 0, 20, 40, 70, 70, 150, 300] 풀이
function solution(k, score) { const answer = []; const kNums = []; for(let i=0; i<score.length; i++) { kNums.push(score[i]); kNums.sort((a, b) => b - a); if(kNums.length > k) { kNums.pop(); } answer.push(kNums[kNums.length-1]); } return answer; }
함수 solution은 두 개의 매개변수를 받는다.
1. 명예의 전당에 최대 보관할 점수의 개수 = k
2. 매일 들어오는 점수 배열 = score
추가적으로 두 개의 변수를 더 선언했다.
1. 매일 명예의 전당의 최하위 점수를 저장할 배열 = answer
2. 현재 명예의 전당에 저장된 점수 배열 = kNums
먼저 for문을 통해 점수처리를 한다.
kNums.push(score[i])를 통해 현재 점수를 명예의 전당에 추가했고,
kNums.sort((a, b) => b - a)를 통해 kNums의 배열을 내림차순으로 정리했다.
이는 높은 점수가 앞에 오도록 정렬했고, kNums[0]이 제일 높은 점수, kNums[k-1]이 제일 낮은 점수이다.
그 다음으로는 명예의 전당 최대 크기를 제한했다.
kNums 배열이 k개의 점수를 초과하면, pop()을 통해 가장 낮은 점수를 제거했다.
이후, 매일 최하위 점수를 기록했다.
answer.push(kNums[kNums.length - 1])은 명예의 전당에서 가장 낮은 점수이므로, 이를 answer에 추가했다.
이후 최종적으로 매일 명예의 전당의 최하위 점수를 기록한 배열 answer를 반환했다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 1] 카드 뭉치 (JavaScript) (1) 2024.11.25 [프로그래머스 Level 1] 추억 점수 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 1] [1차] 비밀지도 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 2] 멀리 뛰기 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 귤 고르기 (JavaScript) (0) 2024.11.24