코딩테스트 대비/단계별 코딩 테스트 준비(27일 과정)

[재귀/Python] 11729번: 하노이 탑 이동 순서 - 효과는 굉장했다!

bluetag_boy 2022. 2. 11. 21:10
반응형
 

11729번: 하노이 탑 이동 순서

세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로

www.acmicpc.net

 

알고리즘 분류

  • 재귀

 

 

SOLUTION

import sys

def hanoi_tower(N, first, second, third):
    if N == 1:
        print(first, third)
    
    else:
        hanoi_tower(N-1, first, third, second)
        print(first, third)
        hanoi_tower(N-1, second, first, third)

N = int(sys.stdin.readline())
print(2**N-1)
hanoi_tower(N,1,2,3)

# N % 2 == 0 이면 첫 원판이 1 -> 2 으로 이동
# N % 2 == 1 이면 첫 원판이 1 -> 3 으로 이동