문제 : 배열 array의 i 번째 숫자로 부터 j번째 숫자까지 자르고 정렬했을때, k번째에 있는 수를 구하라
예시)
array = [1, 5, 2, 6, 3, 7, 4], commands = [2, 5, 3] 이라면
입출력 예시
array | commands | return |
---|---|---|
[1, 5, 2, 6, 3, 7, 4] | [[2, 5, 3], [4, 4, 1], [1, 7, 3] | [5, 6, 3] |
function solution(array, commands) {
var answer = [];
// for문으로 commands를 돌면서 각각의 조건들을 우선 쪼갰다
for (let command of commands) {
// array.slice는 첫 번째 인자 이상 두 번째 인자 미만이고, array의 index는 0부터 시작함으로 첫 번째 인자에만 -1을 붙혀서 조건이랑 일치시켰다.
let arr = array.slice(command[0]-1, command[1])
// 조건대로 오름차순으로 정렬했다. array.sort는 mutable임으로 다른 변수를 생성해주지 않고 원본을 직접 바꿨다.
arr.sort((a, b) => a-b);
// 각각의 조건의 k 번째 수를 answer에다 집어넣어서 문제의 답을 만족 시켰다.
answer.push(arr[command[2]-1])
}
return answer;
}