본문 바로가기

전공지식/알고리즘

[백준][11729] 하노이탑 이동 문제


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



package hanoitop;


import java.util.Scanner;


public class HanoiTop {


public static int count = 0;

public static void main(String[] args){

//1~20의 조건이 맞는 수

int onePan = new Scanner(System.in).nextInt();

StringBuilder sb = new StringBuilder();

solve(onePan,1,3,sb);

System.out.println(count);

System.out.println(sb.toString());

}

/*소스해설... 위주로*/

public static void solve(int n, int x, int y, StringBuilder sb){

if(n==0) return;

solve(n-1,x,6-x-y,sb); //n-1번째를 중간봉으로 옮긴다.)

count++;

sb.append(x+" "+y+"\n"); //마지막판을 목적봉으로 옮긴다.

solve(n-1,6-x-y,y,sb);//n-1번째를 목적봉으로 옮긴다.

}

}