공주 구하기

설정·2021년 3월 15일
0
  • In Progress
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이 될때까지 돌려야할것같다.

0개의 댓글