[テストエンコーディング]JavaScript 7
質問する
問題の説明
配列のi番からj番までを切り取って並べ替えると、k番目の数字を求めようとします.
例えばarrayが[1,5,2,6,3,7,4],i=2,j=5,k=3の場合
せいげんじょうけん
arraycommandsreturn[1, 5, 2, 6, 3, 7, 4][[2, 5, 3], [4, 4, 1], [1, 7, 3]][5, 6, 3]
[ソース]プログラマー(https://programmers.co.kr/learn/courses/30/lessons/42748)
答え
答え.
function solution(array, commands) {
let answer = [];
let answerArray = []
for (let el of commands) {
answerArray = array.slice(el[0]-1,el[1])
answerArray.sort((a,b) => a-b);
answer.push(answerArray[el[2]-1])
}
return answer;
}
commandsは配列内の構造であるため,文を繰り返して対応する値を求め,答え配列に追加する形でコードを記述する.arrayでは、sliceメソッドを使用して、対応する範囲を個別の変数に格納し、昇順にソートし、対応する数値を答えにプッシュします.答え.
function solution(array, commands) {
let answer = [];
answer = commands.map(el=>{
return array.slice(el[0]-1,el[1]).sort((a,b)=>a-b)[el[2]-1];
})
return answer;
}
簡単なコードなのですぐに書きますが、後でmapという方法がわかったのでmapを使って短いコードに変えました.重複文の代わりにmapを用い,可読性として宣言された変数を除去する以外は,構造は同じである.分かりにくいですが、mapの使い方はもうマスターしました.Reference
この問題について([テストエンコーディング]JavaScript 7), 我々は、より多くの情報をここで見つけました https://velog.io/@bbaa3218/코딩-테스트-javaScript-7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol