[javascript] 하노이 탑 (Hanoi Tower)

하노이 탑

하노이 탑은 다음과 같은 조건을 가지고 있다.

  • 한번에 하나의 원판만 이동
  • 맨위에 있는 원판만 이동 가능
  • 작은 원판 위에 큰 원판을 올리는 것은 불가능
  • 중간의 막대는 임시적으로 이용 가능

hanoi

n-1개를 A에서 B로 이동하고, n개를 A에서 C로 이동한다. 그리고 n-1개를 B에서 C로 이동한다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
let hanoi = (n, from, temp, to) => {
    if(n===1) console.log(`${n}${from}에서 ${to}로 이동`);
    else {
        hanoi(n-1, from, to, temp);
        console.log(`${n}${from}에서 ${to}로 이동`);
        hanoi(n-1, temp, from, to);
    }
}

hanoi(5, 'A', 'B', 'C');
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1을 A에서 C로 이동
2을 A에서 B로 이동
1을 C에서 B로 이동
3을 A에서 C로 이동
1을 B에서 A로 이동
2을 B에서 C로 이동
1을 A에서 C로 이동
4을 A에서 B로 이동
1을 C에서 B로 이동
2을 C에서 A로 이동
1을 B에서 A로 이동
3을 C에서 B로 이동
1을 A에서 C로 이동
2을 A에서 B로 이동
1을 C에서 B로 이동
5을 A에서 C로 이동
1을 B에서 A로 이동
2을 B에서 C로 이동
1을 A에서 C로 이동
3을 B에서 A로 이동
1을 C에서 B로 이동
2을 C에서 A로 이동
1을 B에서 A로 이동
4을 B에서 C로 이동
1을 A에서 C로 이동
2을 A에서 B로 이동
1을 C에서 B로 이동
3을 A에서 C로 이동
1을 B에서 A로 이동
2을 B에서 C로 이동
1을 A에서 C로 이동
Built with Hugo
Theme Stack designed by Jimmy