카테고리 없음

[백준] JAVA 1729: 하노이 탑 이동 순서

코딩하는곰곰 2022. 2. 4. 20:05

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

 

11729번: 하노이 탑 이동 순서

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

www.acmicpc.net


Solution:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	static StringBuilder sb = new StringBuilder();
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		
		sb.append((int)(Math.pow(2, N))-1).append("\n");
		
		int start = 1;
		int side = 2;
		int end = 3;
		Hanoi(start, side, end, N);
		
		System.out.print(sb);
		
		br.close();
		
	}
	static void Hanoi(int start, int side, int end, int N) {
		if(N==1) {
			sb.append(start+" "+end).append("\n");
		}
		
		else {
			Hanoi(start, end, side, N-1);
			sb.append(start+" "+end).append("\n");
			Hanoi(side, start, end, N-1);
		}
		
	}
}