세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다.
이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다.
const input = require('fs').readFileSync('/dev/stdin').toString();
const N = +input;
const process = [];
let count = 0;
const hanoi = (N, start, remaining, end) => {
if (!N) return;
hanoi(N - 1, start, end, remaining);
process.push(`${start} ${end}`);
count += 1;
hanoi(N - 1, remaining, start, end);
};
hanoi(N, 1, 2, 3);
console.log(count);
console.log(process.join('\n'));
감사합니다 !! 배워가요 ~