본문 바로가기
Computer Science/Programming-알고리즘

[Baekjoon] 하노이 탑 이동 순서

by M-life 2016. 2. 22.
반응형

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


설명 : 알고리즘 강의에서 재귀함수에 대한 부분에서 항상 언급되는 하노이타워 문제이다.

N개의 원판을 A에서 C로 옮길 때, 

1. N-1개의 원판을 A에서 B로 옮긴후,

2. A에 남아있는 가장 큰 원반을 C로 옮긴다. 

3. 다시 N-1개의 원판을 B에서 A로 옮기면 된다.


코드 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
package feb12.hanoi;
 
import java.util.Scanner;
 
 
public class Main {
    
    
    public void hanoi(int i, int start, int mid, int end){
    
        if(i == 1){
            System.out.println(start + " " + end);
        }
        else {
            hanoi(i - 1, start, end, mid);
            System.out.println(start + " " + end);
            hanoi(i - 1, mid, start, end);
        }
        
    }
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        int N;
        Scanner sc = new Scanner(System.in);
        Main m = new Main();
        N = sc.nextInt();
        
        System.out.println((int)Math.pow(2, N) - 1);
        m.hanoi(N, 123);
        
        
    }
 
}
 
cs


반응형

'Computer Science > Programming-알고리즘' 카테고리의 다른 글

[Baekjoon] 타일채우기  (0) 2016.02.22
[Baekjoon] 외계인의 기타연주  (0) 2016.02.22
[Baekjoon] 앱  (0) 2016.02.22
[Baekjoon] 네트워크 연결  (0) 2016.02.09

댓글