문제설명

 

소스코드

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

public class Main
{
    static StringBuilder sb = new StringBuilder();
    static void hanoi(int TopNum, int x, int y)
    {
        if (TopNum > 1) hanoi(TopNum - 1, x, 6 - x - y);
        sb.append(x + " " + y ).append("\n");
        if (TopNum > 1) hanoi(TopNum - 1, 6 - x - y, y);
    }
	
    public static void main(String[] args) throws Exception
    {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	
    	int n = Integer.parseInt(br.readLine());
    	System.out.println((int)Math.pow(2, n) - 1);
    	hanoi(n, 1, 3);
    	sb.toString();
    	System.out.println(sb);
    }
}

 

설명

2023.02.03 - [자료구조 & 알고리즘/알고리즘] - [JAVA] 하노이의 탑 (Tower of Hanoi)

 

[JAVA] 하노이의 탑 (Tower of Hanoi)

Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 연습문제와 실습문제입니다. 하노이의 탑 설명 1, 2, 3번 기둥 이렇게 3개의 기둥과 크기가 모두 다른 n개의 원판이 있을 때, n개의 원판 모두

rebugs.tistory.com