SMALL
하노이탑 알고리즘
A, B, C 기둥이 있고, A의 원반을 전부 C로 옮기는 것이 목표
1. n-1 개의 원반을 B로 옮긴다.
2. A에 남은 원반을 C로 옮긴다.
3. B에 있는 n-1 개의 원반을 C로 옮긴다.
* n이 1일 때에는 목적지로 바로 이동시켜준다.
import sys
sys.stdin = open("sample.txt", "r")
n = int(sys.stdin.readline())
stick = []
stick += [i for i in range(n,0,-1)], [],[]
def hanoi(n, A, B, C):
# A에서 C로 이동시키고, B를 보조로 사용
if n == 1:
print(f'{A} {C}')
# C.append(A.pop())
return
hanoi(n-1, A, C, B)
hanoi(1, A, B, C)
hanoi(n-1, B, A, C)
print(2**n-1)
hanoi(n, 1,2,3)
참.. 이런거 어떻게 생각해내는 건지.. 갈 길이 멀다
'Coding Test > 백준 BOJ' 카테고리의 다른 글
| 백준 21610. 마법사 상어와 비바라기 - 골드 5 (0) | 2021.10.15 |
|---|---|
| 백준 1629. 곱셈 - 실버 1 (0) | 2021.08.27 |
| 백준 10989 - 실버5 (0) | 2021.08.11 |
댓글