姫を救う
10719 ワード
function solution(n, k) {
let arr = [], queue = [];
for(let i=0; i<n; i++) {
arr.push(i+1);
}
// [1, 2, 3, 4, 5, 6, 7, 8]
while(arr.length > 1) {
for(let i=1; i<=k; i++) { // 1부터 3까지
queue.push(arr.shift()); // 새로운 배열(queue)에 arr배열의 첫번째 인덱스 넣기
console.log(i+'회', queue);
}
queue.pop(); // queue 배열의 마지막을 제거
console.log('length', arr.length, queue);
}
}
console.log(solution(8, 3));
-Output1회 [1]
2회 (2) [1, 2]
3회 (3) [1, 2, 3]
length 5 (2) [1, 2]
1회 (3) [1, 2, 4]
2회 (4) [1, 2, 4, 5]
3회 (5) [1, 2, 4, 5, 6]
length 2 (4) [1, 2, 4, 5]
1회 (5) [1, 2, 4, 5, 7]
2회 (6) [1, 2, 4, 5, 7, 8]
3회 (7) [1, 2, 4, 5, 7, 8, undefined]
length 0 (6) [1, 2, 4, 5, 7, 8]
トリックを使うようだarr配列の長さが1より大きいまで.
queue配列に値をプッシュするので、低い結果値で終了します
結論arrの1から8サイクルで終了
新しい配列にプッシュするのではなく、現在の配列にプッシュして1になるまで.
Reference
この問題について(姫を救う), 我々は、より多くの情報をここで見つけました https://velog.io/@reveloper-1311/공주-구하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol