Algorithms

A004_hanoi

페프 2021. 9. 17. 22:34

하노이탑은 두 가지의 규칙이 있다. 

1. 한 번에 하나의 원판만 옮길 수 있다.

2. 큰 원판이 작은 원판 위에 있어서는 안 된다.

이 두 가지의 규칙을 가지고 하노이탑 코드를 짜보았다.


※ 그래픽으로 표현하기 어렵기에 콘솔로 만들었다.

using System;

// hanoi tower - recursive function
namespace A004_hanoi
{
  class Program
  {
    static void Main(string[] args)
    {
      Hanoi(100, 'A', 'C', 'B');  // A에서 B를 이용해 C로 간다
    }

    private static void Hanoi(int n, char from, char to, char by)
    {
      if(n==1)
        Console.WriteLine("Move : {0} -> {1}", from, to); 
      else
      {
        Hanoi(n - 1, from, by, to);
        Console.WriteLine("Move : {0} -> {1}", from, to);
        Hanoi(n - 1, by, to, from);
      }
    }
  }
}

 

다음은 실행화면이다.