반응형
문제 : 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, 1, 2, 3); } } | cs |
반응형
'Computer Science > Programming-알고리즘' 카테고리의 다른 글
[Baekjoon] 타일채우기 (0) | 2016.02.22 |
---|---|
[Baekjoon] 외계인의 기타연주 (0) | 2016.02.22 |
[Baekjoon] 앱 (0) | 2016.02.22 |
[Baekjoon] 네트워크 연결 (0) | 2016.02.09 |
댓글