JavaScripts 문제

문제 53. 명예의 전당(1)(난이도 7)

kagan-draca 2024. 8. 2. 14:23

 

문제를 보고 반복문 없이 풀 수 있을 것 같은데...

생각을 하다가 오래 걸렸다...

 

하지만! 반복문 없이 문제를 풀어냈다.

 

먼저,

score.map((element, index)=>

{

        if(index < k) return min = element < min ? element : min;

})

현재 index(일차)가 명예의 전당 커트라인 개수 보다 적으면,

return min = element < min ? element : min;

으로 가장 작은 값을 리턴해줬다.

 

그 밖의 경우(일차가 명예의 전당 컷트라인보다 클 경우)(여기에서 오래 걸림)

score.map(~~~)함수가 동작하기 이전

let temp = [] 라는 일차 별 점수를 내림차순 정렬할 배열을 새로 만들어줬다.

이후,

return score.map((element, index)=>

{
        temp.push(element)
        temp.sort((a, b)=> b - a)
        if(index < k) return min = element < min ? element : min;
        else return temp[k - 1]

})

으로 return temp[k - 1]로 temp에 내림차순 정렬된

커트라인 점수를 반환해주었다.

 

제출한 코드 :

 

function solution(k, score) 
{
    let temp = []
    let min = score[0];
    return score.map((element, index)=>
    {
        temp.push(element)
        temp.sort((a, b)=> b - a)
        if(index < k) return min = element < min ? element : min;
        else return temp[k - 1]
    })
}