문제 출처
1. 문제설명
- 대표적인 재귀 문제 하노이의 탑
- 3개의 기둥과
N
개의 원판이 주어질 때,
- 하노이의 탑 규칙을 적용한 경로를 구하는 문제
- 규칙
- 한 번에 하나의 원판만 옮길 수 있다.
- 큰 원판이 작은 원판 위에 올라가 있으면 안된다.
- 즉,
N
이 3이면 가장 왼쪽 기둥에 위부터 1, 2, 3 크기의 원판이 있는 것
- 문제 분류
- Implementation, Simulation
2. 알고리즘 설계
N
개의 원판을 옮기기
N-1
개의 원판을 2번째 기둥으로 옮기고,
- 1번 기둥에서 3번 기둥으로
N
번째 원판을 옮긴다.
answer.push_back({from, to}) // 기록
- 2번째 기둥에 위치한
N-1
개의 원판을 3번 기둥으로 옮긴다.
3. 전체 코드
4. 소감
- 학부 시절, 알고리즘 수업 때 거의 맨 앞에 나오는 알고리즘이다.
- 그 당시 반복 형태의 코드는 생각보다 엄청 복잡했었고,
- 복잡한 로직을 재귀로 간단히 풀이했던 것이 기억났다.
- ‘모든 반복의 형태는 재귀로 변환 가능하고, 그 역도 가능하다.’