백준

백준 11729 하노이 탑 이동 순서(Java)

Park DJ 2023. 2. 14. 23:19

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

 

11729번: 하노이 탑 이동 순서

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

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 재귀를 활용하는 함수입니다. 하노이의 탑에 대해서는 다음 링크를 참조하시기 바랍니다.

https://ko.wikipedia.org/wiki/하노이의_탑

 

하노이의 탑 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 하노이의 탑(Tower of Hanoi)은 퍼즐의 일종이다. 세 개의 기둥과 이 기둥에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들

ko.wikipedia.org


 

Java 코드

 


import java.util.Scanner;

public class Main {

  static StringBuilder sb = new StringBuilder();

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();

    sb.append((int)Math.pow(2, n) - 1).append("\n");

    cal(n, 1, 2, 3);
 
    System.out.println(sb);
  }

  public static void cal(int num, int fir, int sec, int thr) {
    if(num == 1) {
      sb.append(fir+" "+thr).append("\n");
      return;
    }
    cal(num - 1, fir, thr, sec);
    sb.append(fir+" "+thr).append("\n");
    cal(num - 1, sec, fir, thr);
  }
}