[알고리즘] 문제풀이 연습

[알고리즘] 정렬 - k번째 lv2

ddgoori 2021. 8. 8. 14:51

체이닝으로 풀어야 속도로 테스트 케이스 다 통과할 수 있음

 

아래 풀이로 풀었을 때는 케이스를 다 맞추진 못했음.

// 첫번째 풀이
function solution(array, commands) {
    let answer = [];
    let newArray = [];

    commands.forEach((e) => {
        newArray = [];
        for (let i = e[0] - 1; i < e[1]; i++) {
            newArray.push(array[i]);
        }
        newArray.sort();
        console.log(newArray);
        answer.push(newArray[e[2] - 1]);
    });
    return answer;
}

 

 

1. map 사용해서 한 줄씩 뽑는다.

2. array.slice(first index, last index) 을 통해 배열을 자른다. => last index는 해당 번째를 포함하지 않는다.

3. slice 해서 자른 배열에서 sort((a,b)=> a-b) 오름차순으로 정렬하고 정렬된 것의 배열을 바로 [] 번째를 뽑아낸다.

function solution(array, commands) {
    let answer = [];

    answer = commands.map(v => {
        return array.slice(v[0]-1, v[1]).sort((a,b) => a-b)[v[2]-1];
    })
    console.log(answer);
    return answer;
}