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, 1, 3);
Console.WriteLine(sb.ToString());
}
}
|
cs |
재귀는 정말 난이도가 조금만 올라가도 이해하기가 너무 힘든거 같다.... 혼자 도저히 안되서 아래의 블로그를 참고했다.
https://shoark7.github.io/programming/algorithm/tower-of-hanoi
'하노이의 탑' 이해하기
'하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를 구하는 일반항까지 수학적으로 유도합니다.
shoark7.github.io
728x90
반응형
'C# > 백준 알고리즘' 카테고리의 다른 글
2022.02.03 [백준] C# 분해합 (0) | 2022.02.03 |
---|---|
2022.02.03 [백준] C# 블랙잭 (0) | 2022.02.03 |
2022.01.28 [백준] C# 별 찍기 - 10 (0) | 2022.01.28 |
2022.01.28 [백준] C# 피보나치 수 5 (0) | 2022.01.28 |
2022.01.28 [백준] C# 팩토리얼 (0) | 2022.01.28 |
댓글