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));
-Output
1회 [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 배열에 값을 push하기 때문에 저 결과값으로 끝이 남
결론은 arr의 1부터 8까지만 돌고 끝새로운 배열에 push하는게 아니라 현재 배열에 push를 하면서 1이 될때까지 돌려야할것같다.