[백준/파이썬] 11729번 - 하노이 탑 이동 순서

Jungyu Jin·2022년 1월 10일
0

BackJoon

목록 보기
10/16

문제 설명

풀이 전략

n개의 원판을 A에서 C로 이동시키는 과정을 생각해보면 최종적으로 n-1개의 원판을 B에 놓고, 남은 하나의 원판을 A에서 C로 옮긴 후 B의 원판들을 C에 옮기면 된다.

코드

n = int(input())
def hanoi(n,a,b,c):
    if n == 1:
        print(a,c)
    else:
        hanoi(n-1,a,c,b)
        print(a,c)
        hanoi(n-1,b,a,c)
count = 0
for _ in range(n):
    count = 2*count + 1
print(count)
hanoi(n,1,2,3)

hanoi 함수를 보면 재귀 호출을 할 때 인자의 순서가 다른 것을 볼 수 있는데, 원래 인자 순서대로 설명하면 a는 현재 n개의 원판이 쌓여있는 곳, b는 n-1개의 원판을 옮겨 놓을 곳, C는 a에서 남은 원판을 놓을 곳이 된다. 풀이 전략에서의 동작을 함수로써 작성하여 해결한 것이다,

0개의 댓글