728x90

단계별로 풀어보기 재귀의 4단계 문제

 

11729번: 하노이 탑 이동 순서

세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5

www.acmicpc.net

def hanoi(n, fr, temp, to):
    if n == 1:
        li.append((fr, to))
        return
    hanoi(n - 1, fr, to, temp)
    li.append((fr, to))
    hanoi(n - 1, temp, fr, to)
n = int(input())
li = []
hanoi(n, 1, 2, 3)
print(len(li))
for i in range(len(li)):
    print(li[i][0], li[i][1])
728x90

'알고리즘 문제' 카테고리의 다른 글

[백준] 1149번 RGB 거리  (0) 2020.01.12
[백준] 9461번 파도반수열  (0) 2020.01.12
[백준] 2447번 별 찍기 - 10  (0) 2020.01.12
[백준] 10870번 피보나치 수5  (0) 2020.01.12
[백준] 10872번 팩토리얼  (0) 2020.01.12

+ Recent posts