プログラマーK第一手featsplice



問題の説明


配列のi番からj番までを切り取って並べ替えると、k番目の数字を求めようとします.
例えばarrayが[1,5,2,6,3,7,4],i=2,j=5,k=3の場合
arrayの2番目から5番目の場合は[5,2,6,3].
1の配列を並べ替えると[2,3,5,6].
2からの配列の3番目の数字は5です.
配列配列、[i、j、k]を要素とする2次元配列コマンドをパラメータとして与える場合は、commandsのすべての要素に前述の演算を適用した結果を配列に戻してsolution関数を作成します.

せいげんじょうけん


arrayの長さは1または100以下です.
arrayの各要素は1または100未満です.
コマンドの長さは1または50を超えません.
コマンドの各要素の長さは3です.

I/O例


array commands return
[1, 5, 2, 6, 3, 7, 4][2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
I/O例説明
[1,5,2,6,3,7,4]を2番目から5番目に切り取り、並べ替えます.[2,3,5,6]の3番目の数字は5です.
[1,5,2,6,3,7,4]を4番目から4番目に切り取り、並べ替えます.[6]の最初の数字は6である.
[1,5,2,6,3,7,4]最初から7番目にカット[1.2.3.4.5.6.7]の3番目の数字は3です.

正しいコード

function solution(array, commands) {
   
    var answer = [];
    
 	// 커맨드배열의 길이(3) 만큼 반복문을 돌린다 
    for(let i = 0; i < commands.length; i++){
        
        let splitStart = commands[i][0]-1 //splice 함수의 조건을 맞춰주기 위해 시작		 점에 -1을 해준다 
        let splitEnd = commands[i][1]
        let idx = commands[i][2]-1 
        let splitArr = array.slice(splitStart, splitEnd).sort()
        let innerNum = splitArr[idx]
        
        answer.push(splitArr[idx])
    }
    return answer;
  
}

console.log(solution([1,5,2,6,3,7,4],[[2, 5, 3], [4, 4, 1], [1, 7, 3]]))
順番0、1、2と問題で提示された順番1、2、3を並べておけばすぐに解決できるような問題です!
「splice関数」を参照
https://webclub.tistory.com/326