https://www.acmicpc.net/problem/11729
실패이유
: 구현실패
def move(start, end):
print(start, end)
def hanoi_tower(n, start, end):
if n == 1:
move(start, end)
return
hanoi_tower(n - 1, start, 6 - start - end) # 1단계
move(start, end) # 2단계
hanoi_tower(n - 1, 6 - start - end, end) # 3단계
N = int(input())
print(2 ** N - 1)
hanoi_tower(N, 1, 3)
- 6 - start - end 는 번호를 모르는 막대로의 이동을 의미한다.
- 6 은 1, 2, 3 모든 막대의 합
- 원판 3개인 경우의 함수 흐름은 다음과 같다.
- n 개의 탑의 이동 횟수는 다음과 같이 구할 수 있다.
출처: 코드플러스 - 알고리즘 중급 1/3 강의
https://code.plus/course/43