[프로그래머스]정렬 -- K번째수(with JS)

장현광·2021년 4월 1일
0
post-thumbnail

1번째 시도

function solution(array, commands) {
    let answer = [];
    
    answer = commands.map(el => array.slice(el[0] - 1, el[1]).sort()[el[2] - 1])
    
    return answer;
}

의도

commands를 기준으로 map을 한다. commands의 각 배열에 할당된 값으로 slice를 하면 주어진 array를 자를 수 있다.
그 후, sort()를 하여 정렬한다. 마지막으로 k번째 수를 찾는다.

결과

문제점

sort() 함수는 정렬 기준을 정할 수 있는데 이를 지정하지 않으면 문자열로 비교해서 정렬한다고 한다. 한 자리 숫자들만 sort() 한다면 문제 없지만, 자릿수가 늘어나면 정확한 비교기준으로 제시 해주어야 한다.

let arr = [1, 30, 4, 20, 100, 200];
console.log(arr.sort());

// arr = [1, 100, 20, 200, 30, 4];

두 번째 시도

function solution(array, commands) {
    let answer = [];
    
    answer = commands.map(el => array.slice(el[0] - 1, el[1]).sort(
        function(a, b) {
            return a > b ? 1 : a < b ? - 1 : 0
        }
    )[el[2] - 1])
    
    return answer;
}

sort() 안에 오름차순 정렬을 위한 함수만 추가 해 주면 완성.

profile
프론트!

0개의 댓글