- 너무 유명한 문제이기 때문에 문제는 생략. 
- 재귀를 이용할 수 있는지를 알아보는 문제. 
void Move(int id, char from, char to) {
    printf("[원판%d] %c -> %c\n",id, from, to);
}
//from에 꽂혀있는 num개의 원판을 by를 거쳐서 to로 이동.
void SolveHanoi(int num, char from, char by, char to)
{
    if (num == 1) {
        Move(1, from, to);
        return;
    }
    SolveHanoi(num - 1, from, to, by);
    Move(num, from, to);
    SolveHanoi(num - 1, by, from, to);
}
int main() {
    SolveHanoi(5, 'A', 'B', 'C');
}- 가장 큰 원판을 제외하고, 나머지를 from에서 by로 옮긴다. 
- 가장 큰 원판을 from 에서 to로 옮긴다. 
- by로 옮겼던 나머지를 to로 옮긴다. 
- 시간복잡도는  
'아카이빙' 카테고리의 다른 글
| AVL 트리 (0) | 2018.05.29 | 
|---|---|
| 이진 탐색 트리(Binary Search Tree) (0) | 2018.05.29 | 
| 정렬된 두 배열을 병합하기 (0) | 2018.05.24 | 
| Python으로 알고리즘 공부 12. 최소 신장 트리 - Kruskal 알고리즘 (0) | 2017.07.20 | 
| Python으로 알고리즘 공부 11. 최장 공통 부분 수열 (0) | 2017.07.14 |