function solution(n) {
let result = [];
const recursion = (n, src, through, dst) => {
if (n === 1) {
result.push([src, dst]);
return;
}
recursion(n - 1, src, dst, through);
result.push([src, dst]);
recursion(n - 1, through, src, dst);
};
recursion(n, 1, 2, 3);
return result;
}
하노이의 탑이라는 규칙 자체를 원래 잘 알고 있어야 수월하게 풀 수 있는 문제인 것 같다.
원래도 하노이의 탑 실제로 해볼 때 그냥 막 움직이면서 했던 터라... 규칙을 찾아내기가 힘들었다.
결국 다른 사람의 해설을 보고 풀어보았다.
사실 아직도 잘 이해가 안 된다...🥲
재귀를 따라서 실제로 실행해보면 맞긴 한데 어떻게 이 코드를 도출해낼 수 있었는지 너무 신기하다.
여기서 시뮬레이션해볼 수 있다.