티스토리 뷰

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

 

11729번: 하노이 탑 이동 순서

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

www.acmicpc.net

import sys

N = int(sys.stdin.readline())
K = 1

def Hanoi(N, start, tmp, end):
    if (N == 1):
        print(start, end)

    else:
        Hanoi(N-1, start, end, tmp)
        print(start, end)
        Hanoi(N-1, tmp, start, end)

for i in range(N-1):
    K = 2*K + 1

print(K)
Hanoi(N, 1, 2, 3)

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 10250 : ACM 호텔 - Python  (0) 2020.04.07
[백준] 2839 : 설탕 배달 - Python  (0) 2020.04.07
[백준] 1193 : 분수찾기 - Python  (0) 2020.04.06
[백준] 2292 : 벌집 - Python  (0) 2020.04.06
[백준] 1764 : 듣보잡 - Python  (0) 2020.03.27
공지사항
최근에 올라온 글
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함