하노이 탑이란? — 수학과 컴퓨터 과학이 만나는 고전 퍼즐
하노이 탑(Tower of Hanoi)은 1883년 프랑스 수학자 에두아르 뤼카(Édouard Lucas)가 고안한 퍼즐 게임입니다. 세 개의 기둥과 크기가 서로 다른 원판들로 구성되며, 출발 기둥에 쌓인 원판을 목표 기둥으로 모두 옮기는 것이 목표입니다. 단순해 보이는 규칙 안에 재귀(recursion) 알고리즘의 핵심 원리가 고스란히 담겨 있어, 컴퓨터 과학 교육에서 빠질 수 없는 예제로 수십 년째 사랑받고 있습니다.
뤼카는 이 퍼즐을 출시하면서 흥미로운 전설을 함께 소개했습니다. 인도 바라나시의 한 사원에 64개의 황금 원판이 있으며, 승려들이 밤낮없이 원판을 옮기고 있는데 그 작업이 끝나는 날 세상이 종말을 맞이한다는 이야기입니다. 64개 원판을 최소 횟수로 옮기려면 2⁶⁴ − 1 = 약 1,844경 번의 이동이 필요합니다. 1초에 한 번씩 움직인다고 해도 약 5,850억 년이 걸리니, 사실상 "영원"이나 다름없습니다.
기본 규칙 — 단 세 가지만 기억하면 됩니다
- 세 개의 기둥(출발, 보조, 목표)과 n개의 원판으로 시작합니다.
- 한 번에 한 개의 원판만 이동할 수 있습니다.
- 큰 원판 위에 작은 원판을 올릴 수 없습니다 (역방향 적재 금지).
이 세 가지 규칙을 지키면서 모든 원판을 출발 기둥에서 목표 기둥으로 옮기면 됩니다. 규칙은 간단하지만, 원판 수가 늘어날수록 이동 횟수는 기하급수적으로 증가합니다.
HMApps의 하노이 탑 게임에서는 원판 수를 자유롭게 조절할 수 있어, 처음 도전하는 분은 3개부터 시작해 점차 난이도를 높여가며 즐길 수 있습니다.
최적 이동 횟수와 수학적 원리
n개의 원판을 하노이 탑 규칙에 따라 옮기는 데 필요한 최소 이동 횟수는 2ⁿ − 1입니다. 아래 표를 보면 원판 수에 따라 이동 횟수가 얼마나 빠르게 늘어나는지 확인할 수 있습니다.
| 원판 수 | 최소 이동 횟수 | 체감 난이도 |
|---|---|---|
| 1개 | 1번 | 매우 쉬움 |
| 2개 | 3번 | 쉬움 |
| 3개 | 7번 | 입문 |
| 4개 | 15번 | 보통 |
| 5개 | 31번 | 어려움 |
| 6개 | 63번 | 매우 어려움 |
| 7개 | 127번 | 전문가 |
| 10개 | 1,023번 | 마스터 |
이 공식 f(n) = 2ⁿ − 1은 점화식으로도 표현됩니다. f(n) = 2 × f(n−1) + 1, 즉 n개짜리 문제는 (n−1)개짜리 문제를 두 번 풀고 가장 큰 원판을 한 번 옮기는 것으로 해결할 수 있음을 의미합니다. 이것이 바로 재귀 알고리즘의 핵심 아이디어입니다.
핵심 풀이 전략 — 재귀적 사고로 접근하기
하노이 탑의 최적 해법은 재귀 알고리즘으로 깔끔하게 표현됩니다. 처음 보면 막막하게 느껴지지만, 다음 세 단계를 반복하면 어떤 크기의 탑이든 해결할 수 있습니다.
3단계 재귀 전략
- 위쪽 n−1개의 원판을 보조 기둥으로 이동 (목표 기둥을 보조로 사용)
- 가장 큰 원판(n번째)을 목표 기둥으로 이동
- 보조 기둥의 n−1개 원판을 목표 기둥으로 이동 (출발 기둥을 보조로 사용)
3개 원판 예시(A→C, B는 보조):
1. A의 작은 원판 → C 2. A의 중간 원판 → B 3. C의 작은 원판 → B 4. A의 큰 원판 → C ← 가장 큰 원판 이동 완료 5. B의 작은 원판 → A 6. B의 중간 원판 → C 7. A의 작은 원판 → C ← 완성! (총 7번)
프로그래밍 코드로 보는 재귀
function hanoi(n, from, to, aux) {
if (n === 1) {
console.log(`원판 1: ${from} → ${to}`)
return
}
hanoi(n - 1, from, aux, to) // 위쪽 n-1개를 보조로
console.log(`원판 ${n}: ${from} → ${to}`) // 가장 큰 원판 이동
hanoi(n - 1, aux, to, from) // n-1개를 목표로
}
이 코드를 보면 알 수 있듯이, 재귀 호출이 두 번 발생합니다. 실행 트리의 깊이는 n이고, 총 호출 횟수는 2ⁿ − 1이 됩니다. 이 구조를 이해하면 재귀 알고리즘의 시간 복잡도를 직관적으로 파악할 수 있습니다.
HMApps 하노이 탑 게임 활용법
HMApps의 하노이 탑 게임은 별도 설치 없이 브라우저에서 바로 즐길 수 있습니다. 드래그 앤 드롭 방식으로 직관적으로 원판을 이동할 수 있으며, 이동 횟수와 경과 시간이 실시간으로 표시됩니다.
게임 화면 구성
- 원판 수 선택: 3~8개 사이에서 자유롭게 설정 가능
- 이동 카운터: 현재까지 이동한 횟수와 최적 횟수 비교
- 타이머: 풀이 시간 측정으로 기록 경신 도전
- 리셋 버튼: 언제든지 처음부터 다시 시작 가능
- 해법 보기: 막힐 때 최적 경로를 단계별로 확인 가능
난이도별 도전 로드맵
- 3개 원판 (7번) — 게임 방식과 규칙 파악. 2~3분이면 충분
- 4개 원판 (15번) — 패턴 인식 시작. 재귀 흐름 체험
- 5개 원판 (31번) — 집중력이 필요한 진짜 퍼즐. 처음엔 10~20분 소요
- 6개 원판 (63번) — 한 번 도전해볼 만한 고급 과제. 30분 이상 권장
- 7개 이상 — 알고리즘 암기 후 빠른 실행 연습
두뇌 트레이닝 관점에서의 효과
하노이 탑은 단순히 재미를 위한 게임이 아닙니다. 여러 인지 능력을 동시에 단련하는 탁월한 두뇌 운동 도구입니다.