반응형
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기둥으로 옮김
*/
}
반응형
'코딩테스트' 카테고리의 다른 글
[JAVA] 재귀함수 메모화 (0) | 2022.07.23 |
---|---|
[JAVA] 최대공약수 찾기 (0) | 2022.07.23 |
[JAVA] 쉘정렬 (0) | 2022.07.23 |
[JAVA] 단순 삽입정렬 (0) | 2022.07.18 |
[JAVA] 단순 선택정렬 (0) | 2022.07.18 |