[프로그래머스] 하노이의 탑 (JS)

hhkim·2023년 11월 14일
0

Algorithm - JavaScript

목록 보기
180/188
post-thumbnail

풀이 과정

  1. 1번의 n개 중 n-1개를 2번으로 옮긴다. (재귀)
  2. 1번의 가장 큰 n을 3번으로 옮긴다.
  3. 2번의 n-1개를 3번으로 옮긴다. (재귀)
  • n이 1이면 기록하고 빠져나오기

코드

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;
}

🤔

하노이의 탑이라는 규칙 자체를 원래 잘 알고 있어야 수월하게 풀 수 있는 문제인 것 같다.
원래도 하노이의 탑 실제로 해볼 때 그냥 막 움직이면서 했던 터라... 규칙을 찾아내기가 힘들었다.
결국 다른 사람의 해설을 보고 풀어보았다.
사실 아직도 잘 이해가 안 된다...🥲
재귀를 따라서 실제로 실행해보면 맞긴 한데 어떻게 이 코드를 도출해낼 수 있었는지 너무 신기하다.
여기서 시뮬레이션해볼 수 있다.

0개의 댓글