안녕하세요

프로그래머스 JS [하노이의 탑] 본문

프로그래머스/Lv.2

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

sakuraop 2023. 1. 14. 04:32

하노이의 탑

 

 

 

 


문제 요약

 목표: 1번에 있는 n개의 원반을 3번으로 옮겨라.

 규칙1. 한 번에 하나만 옮긴다.
 규칙2. 작은 원반 위에 큰 원반이 있을 수 없다.


재귀는 이해를 못하겠습니다.

https://www.youtube.com/watch?v=uSSC0aKXbWQ&t=651s 

 

function solution(n) {
  const answer = [];
  const hanoi = (plate, start, via, end) => {
    // 원반이 1개라면 목적지로 옮긴다.
    if (plate === 1) {
      answer.push([start, end]);
      return;
    }
 
    // n-1개의 원반을 경유지로 옮겨야 한다.
    hanoi(plate - 1, start, end, via);
 
    // 그리고 시작점에 있는 제일 큰 원반을 목적지로 옮긴다.
    answer.push([start, end]);
 
    // 이제 경유지에 있는 n-1개의 원반을 목적지로 옮겨야 한다.
    hanoi(plate - 1, via, start, end);
  };

  // n개의 원반을 목적지로 옮겨라
  hanoi(n, 1, 2, 3);

  return answer;
}