반응형

 

 

<코드>

import java.util.*;
public class Main {
	
	static StringBuffer sb = new StringBuffer();
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		System.out.println((int)Math.pow(2, N)-1);
		// 1~N번째 원판을 X장대에서 Z장대로 옮기는 함수
		hanoi(1,2,3,N);
		System.out.println(sb.toString());
	}
	
	public static void hanoi(int x, int y, int z, int n) {
		if(n == 0) return;
		else {
			// 1~(N-1)번째 원판을 X장대에서 Y장대로 옮기기
			hanoi(x,z,y,n-1);
			// N번째 원판을 X장대에서 Z장대로 옮기기
			sb.append(x + " " + z + "\n");
			// 1~(N-1)번째 원판을 Y장대에서 Z장대로 옮기기
			hanoi(y,x,z,n-1);
		}
	
	}
}

 

 

 

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

 

11729번: 하노이 탑 이동 순서

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

www.acmicpc.net

 

반응형

+ Recent posts