공부/알고리즘
[단계별로 풀어보기][python 3] 재귀 - 하노이 탑 이동 순서 (11729)
도리암
2022. 4. 30. 15:01
11729번: 하노이 탑 이동 순서 (acmicpc.net)
11729번: 하노이 탑 이동 순서
세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로
www.acmicpc.net
방안 1
하노이의 탑을 실제로 시도해보면 다음과 같다.
이처럼 N개의 원판이 있으면 N-1개의 원판을 하노이의 방식대로 Auxiliary로 옮기고
Source의 원판을 Destination으로 옮긴 뒤 다시 N-1개의 원판을 Destination으로 옮긴다.
이 과정을 직접 해보면 원판의 개수 n에 따라 n**2-1번 움직이게 된다.
def hanoi(n, start, end):
if n ==1:
print(start, end)
return
hanoi(n-1, start, 6-start-end)
print(start, end)
hanoi(n-1, 6-start-end, end)
n = int(input())
k = n**2 - 1
print(k)
hanoi(n,1,3)