코딩테스트

[JAVA] 하노이 탑 알고리즘

dackyy 2022. 7. 23. 02:47
반응형
package Algorithm;

import java.util.Scanner;

public class Hanoi {
    static void move(int no, int x, int y) {
        if (no > 1)
            move(no - 1, x , 6-x-y);

        System.out.println("원반"+no+"를 " +x+"기둥에서"+y+"기둥으로 옮김");
        if (no > 1)
            move(no - 1, 6 - x - y , y);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("원반의 개수 :");
        move(sc.nextInt(), 1, 3);
    }

    /*
    n개의 원반을 1기둥에서 3기둥으로 옮겨야 한다.
    1. n-1의 원반을 1기둥에서 2기둥으로 옮김
        1-1. 1의 원반을 1기둥에서 3기둥으로 옮김
        1-2. 2의 원반을 1기둥에서 2기둥으로 옮김
        1-3. 1의 원반을 3기둥에서 2기둥으로 옮김
    2. 남은 1개의 원반을 3기둥으로 옮김
    3. n-1의 원반을 3기둥으로 옮김
     */
}
반응형