하노이탑의 제약조건은 다음과 같다.
- 한 번에 하나의 원판만 이동 가능
- 맨 위에 있는 원판만 이동 가능
- 크기가 작은 원판 위에 큰 원판을 쌓을 수 없음
원반 N개를 A에서 C로 이동시키려면, 우선 작은 원반 1개를 A에서 B로 이동시키는 과정이 선행되어야 한다(그래야 마지막 원반을 C에 놓고 다음 프로세스 진행 가능) 그 다음 큰 원반을 A에서 C로 이동시키고, 작은 원반 n-1개를 B에서 C로 이동시킨다.
c로 구현시 핵심 코드는 다음과 같다
if (n == 1)
printf("Disk1: %c > %c\n, from, to)
else{
hanoi(n-1,from,to,tmp);
print("Disk%d: %c > %c \n, from, to);
hanoi(n-1,tmp,from,to);
}
반응형
'Computer Science' 카테고리의 다른 글
[자료구조] Linked Lists- Search (0) | 2024.01.29 |
---|---|
[자료구조] Linked List - 삽입, 삭제 개념 (1) | 2024.01.28 |
[자료구조] 재귀함수(Recursion) 개념과 구현, 재귀함수 vs for loop (0) | 2024.01.26 |
[자료구조] 이진탐색 알고리즘 (1) | 2024.01.25 |
[운영체제] 우선순위 스케줄링 (0) | 2024.01.24 |