programmers/level1

[level1] - k번째수

태기의삶 2020. 4. 1. 22:13

 

 

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

 

[풀이]

array = [1, 5, 2, 6, 3, 7, 4]

commands = [[2,5,3], [4,4,1], [1,7,3]]

return [5,6,3]

<입출력 예 설명>
[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다.
[2, 3, 5, 6]의 세 번째 숫자는 5입니다.
[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다.
[6]의 첫 번째 숫자는 6입니다.
[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자른 후 정렬합니다.
[1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.

for문을 통해 commands의 길이만큼 총 3번 반복하고, slice(start, end)를 이용하여 시작점과 끝점 사이의 해당 수를 자르고, sort()를 통해 오름차순 정렬을 한다. 

그러고 나서, answer에 push()를 하여 해당 k번째수를 return 한다.

 

[code]

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

    for(var i=0; i<commands.length; i++){
        var sliced = array.slice(commands[i][0]-1, commands[i][1]).sort((a, b)=> a-b);
        answer.push(sliced[commands[i][2]-1]);
    }

    return answer;
}