Algorithm Problems

[백준][Python] 11729번 하노이탑 이동 순서 - 재귀(하노이탑)

WakaraNai 2021. 8. 31. 13:22
728x90
반응형

https://www.acmicpc.net/problem/11729

 

11729번: 하노이 탑 이동 순서

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

www.acmicpc.net

 

 

 

Python

import sys
n = int(sys.stdin.readline().rstrip())

ans = []
def hanoi(start,thor,dest,n):
    global ans
    if n <= 0:
        return

    #1 -> 3 -> 2
    hanoi(start, dest, thor,  n-1)
    ans.append(str(start)+" "+str(dest))
    #2 -> 1 -> 3
    hanoi(thor, start, dest, n-1)
   
hanoi(1,2,3,n)
print(len(ans))
print("\n".join(ans))

 

 

정리본

import sys
n = int(sys.stdin.readline().rstrip())

ans = []
def hanoi(start,dest,n):
    global ans
    if n <= 0:
        return

    hanoi(start, 6-(start+dest),  n-1)
    ans.append(str(start)+" "+str(dest))
    hanoi(6-(start+dest),dest, n-1)
   
hanoi(1,3,n)
print(len(ans))
print("\n".join(ans))
728x90
반응형