반응형
https://www.acmicpc.net/problem/11729
# 하노이 탑 알고리즘
1. 1번 기둥의 n-1 개의 원반을 2번 기둥으로 옮긴다.
2. 1번 기둥에 남아 있는 가장 큰 원반을 3번 기둥으로 옮긴다.
3. 2번 기둥의 n-1개의 원반을 3번 기둥으로 옮긴다.
num = int(input())
def hanoi(n, p_from, p_to, p_mid):
if n == 1: # 원반이 1개이면 무조건 원반을 1번에서 3번으로 옮긴다.
print(p_from, p_to)
return
hanoi(n-1, p_from, p_mid, p_to) # 1번 기둥의 n-1 개의 원반을 2번 기둥으로 옮긴다
print(p_from, p_to) # 1번 기둥에 남아 있는 가장 큰 원반을 3번 기둥으로 옮긴다
hanoi(n-1, p_mid, p_to, p_from) # 2번 기둥의 n-1개의 원반을 3번 기둥으로 옮긴다
print(2**num-1) # 이동 횟수 = 2^num - 1
hanoi(num, 1, 3, 2)
[ 사진 출처 ]
https://stricky.tistory.com/155
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준/Python] 체스판 다시 칠하기 (0) | 2021.08.24 |
---|---|
[백준/Python] 덩치 (0) | 2021.08.24 |
[백준/Python] 별 찍기 - 10 (0) | 2021.08.14 |
[백준/Python] 특정 거리의 도시 찾기 (0) | 2021.07.24 |
[백준/Python] 플로이드 (0) | 2021.07.04 |