코테/프로그래머스

K번째수 (정렬 Lv1 / JS)

반응형

코딩테스트 연습 > 정렬 > K번째수 Lv1

https://programmers.co.kr/learn/courses/30/lessons/42748?language=javascript

문제정리

array를 commands의 값에 따라 자르고 정렬시켜 해당 위치에 값이 무엇인지 요구하는 문제입니다.

commands의 값이 2중배열로 여러개 존재하다보니 반복문을 사용하였습니다.

코드

commands의 첫 번째, 두 번째 인자는 어디서 부터 어디까지 자르는 값이고
자르는데에는 slice를 사용하였습니다.

그리고 정렬은 sort를 사용하였고

세 번째 인자를 통해 해당 값을 result에 push 하는 방법을 사용했습니다.

function solution(array, commands) {
    let result = [];
    
    for(let i = 0; i < commands.length; i++) {
    let cut = array.slice(commands[i][0]-1, commands[i][1]).sort((a, b) => a - b)
    result.push(cut[commands[i][2]-1])
    }
    return result
}

반복문을 사용하지 않고 map을 사용하는 방법이 좀 더 깔끔하게 짤 수있습니다.

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

    answer = commands.map(a=>{
        return array.slice(a[0]-1,a[1]).sort((b,c)=>b-c)[a[2]-1];
    })
    return answer;
}
반응형