프로그래머스/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;
}