나무 숲
하노이 타워 (The Tower of Hanoi) 본문
조건
- 원반은 한 번에 하나만 옮길 수 있다
- 작은 원반 위에 큰 원반을 올릴 수 없다
패턴 분석
C를 3으로 옮기고자 할 때, A와 B를 2에 옮겨 놓으면 가능하다. -> B를 2로 옮기고자 할 때, A를 3에 옮겨 놓으면 가능하다.
이번엔 4개 (위에서부터 아래로 A,B,C,D)
D를 3으로 옮기고자 할 때, A,B,C를 2로 옮겨 놓으면 가능하다. -> C를 2로 옮기고자 할 때, A,B를 3으로 옮겨 놓으면 가능하다. -> B를 3으로 옮기고자 할 때, A를 2로 옮겨 놓으면 가능하다.
... 같은 방식으로 몇 개의 원반이 있던 간에 어떠한 동일 패턴이 존재한다는 것을 알 수 있다.
이를 다시 일반적으로 표현해보면,
n개의 원반이 있다고 할 때 (위에서부터 아래로 1,2...n번째)
1~(n-1)번째 원반을 2로 옮긴다 -> n번째 원반을 3으로 옮긴다 -> 1~(n-1)번째 원반을 3으로 옮긴다
재귀적 구현
728x90
반응형
'Career > 알고리즘 · 자료구조' 카테고리의 다른 글
연결 리스트 (Linked List) - 이중 연결 리스트, 이중 원형 연결 리스트 (2) | 2016.08.16 |
---|---|
연결 리스트 (Linked List) - 원형 연결 리스트 (0) | 2016.08.15 |
연결 리스트 (Linked List) - 메모리의 동적 할당 (0) | 2016.08.11 |
연결 리스트 (Linked List) - 배열 (0) | 2016.07.15 |
이진 탐색 (Binary Search) (0) | 2016.07.05 |
Comments