출처 : https://www.acmicpc.net/problem/11729
def hanoi(n, start, end) :
if n == 1 :
print(start, end)
else :
hanoi(n-1, start, 6 - start - end)
print(start, end)
hanoi(n-1, 6 - start - end, end)
n = int(input())
print(2**n - 1)
hanoi(n, 1, 3)
n은 전체 원판의 수, start는 옮길 원판이 꽂혀있는 막대의 번호, end는 원판을 옮길 막대의 번호이다.
총 n개의 원판이 있을 때, 전체 과정은 크게 3단계로 구성된다.
1. n-1 개의 원판을 start도 end도 아닌 제 3의 막대(이 막대의 번호는 6 - start - end)로 이동
2. 가장 큰 원판을 start에서 end로 이동
3. 다시 n-1개의 원판을 end로 이동
'알고리즘 문제 풀이' 카테고리의 다른 글
백준 1083번 : 소트 (Python) (0) | 2022.12.07 |
---|---|
백준 1181번 : 단어 정렬 (Python) (0) | 2022.12.05 |
에라토스테네스의 체 (Python) (0) | 2022.11.22 |
백준 10870번 : 피보나치 수 5 (Python) (1) | 2022.11.20 |
백준 9020번 : 골드바흐의 추측 (Python) (0) | 2022.11.15 |
댓글