안녕하세요
프로그래머스 JS [하노이의 탑] 본문
하노이의 탑
문제 요약
목표: 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;
}
'프로그래머스 > Lv.2' 카테고리의 다른 글
숫자 변환하기 (DFS, DP) (0) | 2023.11.24 |
---|---|
프로그래머스 JS [택배상자] (0) | 2023.01.16 |
프로그래머스 JS [전력망을 둘로 나누기] for of (0) | 2023.01.11 |
프로그래머스 JS [롤케이크 자르기] (0) | 2023.01.08 |
프로그래머스 JS [거리두기 확인하기] (0) | 2023.01.08 |