min

프로그래머스 명예의 전당 자바스크립트 본문

알고리즘

프로그래머스 명예의 전당 자바스크립트

minprogramming 2023. 8. 17. 07:10

<문제>

https://school.programmers.co.kr/learn/courses/30/lessons/138477

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

<나의 풀이>

 

//score에 길이만큼 반복문을 돌면서 다음 과정을 수행한다.
//score에 길이에서 k번재 수 만큼은 계속 배열에 값을 넣는다.
//k+1번째 수 부터는 주어진 score의 값이 제일 못한 사람의 수보다 큰지 안큰지 확인한다
//만약 크다면 제일 작은 수를 빼고 큰수를 넣는다. 
//만약 작다면 제일 작은 수를 유지한다.
//배열 중에서 가장 작은 원소의 값을 answer에 넣는다.

function solution(k, score) {
    var answer = [];
    var dummy = []
    for(let i = 0; i < score.length; i++) {
        if(i < k) {
            dummy.push(score[i])
        }
        else {
            if(dummy[0] < score[i]) {
                dummy[0] = score[i]
            }
        }
        dummy = dummy.sort((a,b) => a-b)
        answer.push(dummy[0])
    }
    return answer;
}

 

<다른 사람의 풀이>

 

function solution(k, score) {
    const stack = []
    return score.reduce((a,c) => {
        if(stack.length < k) {
            stack.push(c)
            stack.sort((a,b) => a - b)
        }
        else {
            stack.push(c)
            stack.sort((a,b) => a - b)
            stack.shift()
        }
        a.push(stack[0])
        return a
    },[])
}

 

<참고자료>

sort

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org