[프로그래머스/Javascript] 명예의 전당 (1)

TED·2023년 9월 4일
0

Javascript CodingTest

목록 보기
19/63
post-thumbnail

명예의 전당 (1)

명예의 전당 (1)

function solution(k, score) {
   const award = []
   const answer = []
    for(let i = 0 ; i < score.length ; i ++) { // 점수를 전부 순회한다
        if(i < k) { // k날 까지의 점수를 모두 push
            award.push(score[i])
        }
        if(score[i] > Math.min(...award)) { // 만약 award의 가장 작은값보다 큰값이 있다면
            award.pop()                    // 마지막 배열값을빼고, 
            award.push(score[i])           // 그 값을 push
            award.sort((a,b) => b - a)       // 그리고 내림차순처리
        }
        answer.push(award.at(-1)) // 최하위의 점수를 push
    }                             // at(-1)은 배열의 가장 마지막 값 (지금 가장 작은값을 뜻하게된다)
    return answer
}
//  k=4 및 score=[0, 300, 40, 300, 20, 70, 150, 50, 500, 1000]로 설정한 경우:

// i=0일 때, score[i]는 0이며, k=4이므로 award에 0을 push. award=[0]
// i=1일 때, score[i]는 300이고, award의 가장 작은 값은 0. 따라서 0을 제거하고 300을 추가한 뒤 내림차순으로 정렬. award=[300]
// 이러한 과정을 반복하면 answer 배열은 [0, 0, 0, 0, 20, 40, 70, 70, 150, 300]
// 결과적으로 answer 배열에는 최하위 점수가 저장되며, 이는 award 배열의 마지막 요소 award.at(-1)
profile
컴맹 개발 입문자

0개의 댓글