const answer = [];
const hanoi = (n, src, dst, mid) => {
if (n === 1) answer.push([src, dst]);
else {
hanoi(n - 1, src, mid, dst);
answer.push([src, dst]);
hanoi(n - 1, mid, dst, src);
}
}
function solution(n) {
hanoi(n, 1, 3, 2);
return answer;
}
hanoi 함수를 재귀함수로 돌린다.
- A 기둥에 있는 n-1 번째 원판을 B 기둥으로 이동시킨다.
- A 기둥에 있는 n번째 원판을 C 기둥으로 이동시킨다.
- B 기둥에 있는 n-1번째 원판을 C 기둥으로 이동시킨다.
n이 1일 경우엔 그냥 src -> dst로 원반을 옮기면 된다.
n >= 2 일 경우엔 src -> dst로 원반을 옮기기 위해 mid에 돌을 잠시 옮겨두었다가 가야한다.
결론은, 그냥 외우자. 모르겠다!
ㅋㅋㅋㅋㅋㅋ 결론 너무 공감 됩니다