스크랩

[알고리즘] 하노이의 탑 - 재귀

미래에서 온 개발자 2022. 12. 24. 13:42
 

'하노이의 탑' 이해하기

'하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를 구하는 일반항까지 수학적으로 유도합니다.

shoark7.github.io

 

💡 재귀 문제의 핵심

1. 문제 정의: 재귀 함수의 입출력값 정의

2. 문제를 작게 만들어 해결하기 

3. 작게 쪼갠 문제를 재귀식으로 표현하기 

4. 재귀식을 그대로 코드로 구현

 

 

function _move(N, start, to) {
  return console.log(`${N}번 원반을 ${start}에서 ${to}로 이동시킨다`);
}

function hanoi(N, start, to, via) {
  if (N === 1) _move(1, start, to);
  else {
    hanoi(N - 1, start, via, to);
    _move(N, start, to);
    hanoi(N - 1, via, to, start);
  }
}

hanoi(3, "A", "C", "B");

console output