본문 바로가기
C#/백준 알고리즘

2022.02.02 [백준] C# 하노이 탑 이동 순서

by ian's coding 2022. 2. 2.
728x90
반응형

 

 

https://www.acmicpc.net/problem/11729

 

11729번: 하노이 탑 이동 순서

세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로

www.acmicpc.net

 


풀이

 

 

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
using System;
using System.Text;
 
 
class Program
{
    static void Hanoi(StringBuilder sb, int n, int from, int to)
    {
        if (n == 0)
        {
            return;
        }
        int via = 6 - from - to;
        Hanoi(sb, n - 1, from, via);
        sb.Append(from + " " + to + "\n");
        Hanoi(sb, n - 1, via, to);
    } 
    static void Main()
    {
        StringBuilder sb = new StringBuilder();
        int n = int.Parse(Console.ReadLine());
        Console.WriteLine(Math.Pow(2, n) - 1);
        Hanoi(sb, n, 13);
        Console.WriteLine(sb.ToString());
    }
}
cs

 재귀는 정말 난이도가 조금만 올라가도 이해하기가 너무 힘든거 같다.... 혼자 도저히 안되서 아래의 블로그를 참고했다.

https://shoark7.github.io/programming/algorithm/tower-of-hanoi

 

'하노이의 탑' 이해하기

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

shoark7.github.io

 

728x90
반응형

댓글