본문으로 건너뛰기
← 블로그로 돌아가기

하노이 탑 마스터하기

핵심 요약: 하노이 탑은 하나의 재귀 규칙으로 풀립니다. n개의 원판을 목표 기둥으로 옮기려면, 먼저 n-1개를 중간 기둥으로 옮기고, 가장 큰 원판을 목표 기둥으로 이동한 뒤, n-1개를 그 위에 쌓으면 됩니다. 이 규칙을 모든 단계에 적용하면 항상 최소 이동 횟수에 도달합니다. 최솟값은 항상 2의 거듭제곱보다 1 적습니다: 원판 3개는 7번, 4개는 15번, 5개는 31번, 6개는 63번, 7개는 127번.

게임 소개

하노이 탑은 가장 왼쪽 기둥에 원판들을 쌓아 시작합니다. 가장 큰 원판이 아래, 가장 작은 원판이 위에 있습니다. 목표: 전체 스택을 가장 오른쪽 기둥으로 옮기되, 두 가지 규칙을 지켜야 합니다. 한 번에 원판 하나만 옮길 수 있습니다. 큰 원판을 작은 원판 위에 놓을 수 없습니다.

그것뿐입니다. 타이머도, 무작위성도, 숨겨진 정보도 없습니다. 오직 논리와 이동 예산만 있습니다.

PlayMemorize는 원판 3개부터 7개까지 제공합니다. 이동 예산은 초보자가 패턴을 배우면서도 승리할 수 있도록 최적 최솟값보다 여유있게 시작하며, 레벨이 올라갈수록 수학적 최솟값에 가까워집니다.

최소 이동 횟수: 원판 3개 = 7번, 4개 = 15번, 5개 = 31번, 6개 = 63번, 7개 = 127번. 각 단계는 아래 단계의 약 두 배에 1을 더한 이동 횟수가 필요합니다. 이동 예산을 초과하면 라운드가 패배로 끝납니다.

Tower of HanoiOpen game →
Loading…

재귀 알고리즘

하노이 탑의 모든 것은 하나의 패턴에서 비롯됩니다. 이 패턴을 모든 단계에 반복 적용하면 됩니다.

기둥 B를 임시 저장소로 사용하여 기둥 A에서 기둥 C로 n개의 원판을 옮기려면:

  1. n-1개의 원판을 A에서 B로 옮깁니다 (C를 임시로 사용)
  2. 가장 큰 원판을 A에서 C로 옮깁니다
  3. n-1개의 원판을 B에서 C로 옮깁니다 (A를 임시로 사용)

이것이 완전한 알고리즘입니다. 퍼즐의 모든 단계에서 동일한 3단계 구조를 실행하게 됩니다. 핵심은 1단계와 3단계가 동일한 규칙으로 해결되는 더 작은 문제의 인스턴스라는 점입니다.

원판 3개로 구체적으로 살펴봅시다. 목표: 세 원판 모두를 기둥 1에서 기둥 3으로 옮기기.

  • 1단계 (원판 2개를 기둥 1에서 기둥 2로): 원판 1을 기둥 3으로, 원판 2를 기둥 2로, 원판 1을 기둥 2로.
  • 2단계 (원판 3을 기둥 1에서 기둥 3으로): 한 번의 이동.
  • 3단계 (원판 2개를 기둥 2에서 기둥 3으로): 원판 1을 기둥 1로, 원판 2를 기둥 3으로, 원판 1을 기둥 3으로.

합계: 7번. 최적.

3단계 사고법. 어떤 원판도 건드리기 전에, 세 단계를 소리 내어 말하세요: “n-1개를 중간으로 비우고, 가장 큰 것을 목표로 이동하고, n-1개를 위에 다시 쌓는다.” 모든 재귀 단계에서 원판 하나가 줄어든 동일한 구조를 반복합니다. 이동 순서를 외우는 게 아니라 프랙탈 패턴을 실행하는 것입니다.

팁: 이동하기 전에 “지금 내가 옮겨야 할 가장 큰 원판은 무엇인가?”라고 자문하세요. 그 원판을 옮길 때까지 하는 모든 것이 준비 과정입니다. 이 관점을 유지하면 목적 없는 이동을 방지하고 최적 경로를 유지할 수 있습니다.

이동 횟수가 고정된 이유

최소 이동 횟수는 알고리즘에서 직접 도출됩니다. n개의 원판을 해결하려면 n-1개를 두 번 해결해야 하고(1단계와 3단계), 가장 큰 원판을 한 번 이동해야 합니다(2단계). 따라서 T(n) = 2 × T(n-1) + 1입니다. T(1) = 1로 시작하면: 1, 3, 7, 15, 31, 63, 127 (원판 1개부터 7개까지).

각 숫자는 2의 거듭제곱보다 1 적습니다. 원판 3개: 8 - 1 = 7. 4개: 16 - 1 = 15. 5개: 32 - 1 = 31. 6개: 64 - 1 = 63. 7개: 128 - 1 = 127.

이것은 우연이 아닙니다. n개를 해결할 때마다 n-1개를 두 번 해결하는 직접적인 결과입니다. 이것을 이해하고 나면 하노이 탑을 맞춰야 할 퍼즐이 아닌 실행해야 할 알고리즘으로 바라보게 됩니다.

난이도별 전략

원판 3-4개 (학습): 이 단계에서는 이동 예산이 넉넉합니다. 각 원판에 이름을 붙이세요 - “작은 것”, “중간”, “큰 것” - 어떤 원판을 목표로 하는지 혼동하지 않도록. 아무것도 건드리기 전에 세 단계를 따라가세요. 각 게임 후, 단계를 소리 내어 설명하세요: “두 원판을 중간으로 비우고, 큰 것을 옮기고, 위에 다시 쌓았다.”

팁: 가장 큰 원판은 전체 해결 과정에서 정확히 한 번만 이동해야 합니다. 다시 이동하고 싶은 충동이 생긴다면 멈추세요 - 알고리즘 구조가 무너진 것입니다. 3단계 프레임으로 돌아가 어디서 벗어났는지 확인하세요.

원판 5-6개 (중급): 이동 예산이 빠듯해집니다. 모든 방황하는 이동이 대가를 치릅니다. 각 단계에서 재귀 알고리즘을 엄격하게 적용하세요. n에서 n-1개로 재귀할 때 정신적 초점이 바뀌어야 합니다: 이제 다른 “출발”, “목표”, “보조” 기둥을 가진 더 작은 하노이 퍼즐을 풀고 있습니다. 각 재귀 단계에서 각 기둥이 어떤 역할을 하는지 추적하세요.

보조 기둥 교체. 각 재귀 단계에서 하나의 기둥은 출발, 하나는 목표, 하나는 보조 역할을 합니다. 재귀할수록 역할이 바뀝니다. 기둥 1에서 기둥 2로 n-1개를 옮길 때, 기둥 3이 보조입니다. 그 다음 기둥 1에서 기둥 3으로 n-2개를 옮길 때, 기둥 2가 보조입니다. 이 교체를 의식적으로 추적하세요 - 5개, 6개 원판에서 가장 흔한 혼란의 원인입니다.

원판 7개 (도전): 최소 127번의 이동과 빠듯한 예산으로는 이동 하나씩 생각할 수 없습니다. 단계별로 생각하세요. 시작 전에 상위 구조를 그려보세요: 6개 원판을 중간으로 이동 (63번), 가장 큰 것을 오른쪽으로 (1번), 6개 원판을 오른쪽으로 (63번). 그런 다음 각 6개 원판 단계를 동일한 방식으로 세분화하세요. 이 하향식 계획이 인지 부하를 줄이고 어느 단계에 있는지 잃어버리는 오류를 방지합니다.

주의: 원판 7개에서 이동 순서를 하나씩 외우려는 것은 신뢰할 수 없고 불필요합니다. 알고리즘을 믿으세요. 모든 분기점에서 재귀 규칙을 적용하면 올바른 이동이 항상 결정됩니다. 의심과 주저가 이동을 낭비하고 예산을 소진시키는 방법입니다.

Tower of HanoiOpen game →
Loading…

흔한 실수

시행착오 퍼즐처럼 다루기. 무작위 이동이 가끔 효과있어 보이지만 막다른 길로 이어집니다. 하노이 탑은 알고리즘이지, 실험으로 풀 퍼즐이 아닙니다. 생각에서 무작위성을 완전히 제거하세요.

기둥 역할 잊기. 세 개의 동일한 기둥에서 “출발”, “목표”, “보조”가 혼재될 수 있습니다. 특히 원판 수가 많을 때. 시작 전에 기둥 레이블을 마음속에 명확히 정하세요: 왼쪽 = 시작, 가운데 = 중간, 오른쪽 = 목표. 모든 재귀 단계에서 이 레이블을 일관되게 사용하세요.

가장 큰 원판을 두 번 이상 이동하기. 재귀의 최상위에서 가장 큰 원판은 정확히 한 번 이동합니다. 다시 이동하고 싶은 충동이 생기면 멈추세요 - 알고리즘 구조가 무너진 것입니다. 3단계 프레임으로 돌아가 어디서 벗어났는지 파악하세요.

가장 큰 원판 체크포인트. 재귀의 각 단계에서 n번째 원판은 정확히 한 번 이동해야 합니다. 첫 번째 하위 단계(n-1개를 보조 기둥으로 이동) 후에 n번째 원판은 자유롭고 이동되지 않은 상태여야 합니다. 2단계 후에는 목표 기둥에 있어야 합니다. 그렇지 않다면 알고리즘에서 벗어난 것입니다.

이동 횟수 소진. 이것은 알고리즘을 따르지 않을 때, 또는 이동을 하고 나서 마음을 바꿔 다른 경로를 시도할 때만 발생합니다. 알고리즘에 전념하세요. 최적입니다 - 더 나은 경로는 없습니다.

주의: 재귀 알고리즘으로 이동을 결정했다면 실행하세요. 실행 중에 의심하면 이동을 낭비합니다. 알고리즘은 최적성을 보장합니다 - 믿고 주저 없이 실행하세요.

연습 계획

1주차 - 알고리즘 내재화 (원판 3개). 매일 원판 3개 게임을 하세요. 각 게임 후 세 단계를 소리 내어 설명하세요. 첫 번째 이동 전에 전체 해결 과정을 설명할 수 있을 만큼 패턴이 익숙해질 때까지 반복하세요.

2주차 - 확장 (원판 4-5개). 원판 4개 게임으로 이동하세요. 이제 재귀가 두 단계 깊어집니다. 각 게임 후 구조를 추적하세요: “3개로 재귀하고, 큰 것을 이동하고, 다시 재귀했다.” 원판 4개를 3-4번 하고 나서 5개로 이동하세요.

3주차 - 압박 (원판 6개). 원판 6개에서 이동 예산이 결정적 제약이 됩니다. 알고리즘만을 가이드로 플레이하세요. 두 번의 6개 원판 게임을 최소 이동 횟수(63번)에서 5번 이내로 완료하는 것을 목표로 하세요. 이동 횟수를 추적하고 한 주 동안 63에 가까워지는 것을 지켜보세요.

4주차 - 숙달 (원판 7개). 원판 7개 퍼즐에 도전하세요. 어떤 원판도 건드리기 전에 하향식 단계 계획을 적용하세요. 원판 7개에서 연속 3번 승리하고 이동 횟수가 127에 가까울 때 진정한 숙달을 의미합니다.

팁: 원판 단계별 이동 횟수 기록을 유지하세요. 세션을 거치면서 이동 횟수가 최솟값을 향해 줄어드는 것을 지켜보는 것이 재귀 패턴이 내재화되고 있다는 가장 명확한 외부 신호입니다. 원판 7개에서 130번 이상이면 아직 방황하는 이동이 나타나고 있는 것이고, 일관성 있게 135번 이하이면 구조가 탄탄한 것입니다.

하노이 탑은 숙달이 절대적이고 측정 가능한 몇 안 되는 게임 중 하나입니다. 재귀 알고리즘을 알고 실행하거나, 알지 못하거나 둘 중 하나입니다. 알고 나면 모든 난이도 단계가 동일한 논리에 굴복합니다. 천천히 하고, 단계를 명명하고, 알고리즘을 믿으세요. 해결책은 항상 거기 있습니다.

MemPi
다음 비행기에서 플레이 · 오프라인 지원
PlayMemorize를 홈 화면에 추가하세요
Safari에서 공유 를 누른 다음 "홈 화면에 추가"를 선택하세요.