본문 바로가기

PS/백준

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

728x90

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

 

11729번: 하노이 탑 이동 순서

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

www.acmicpc.net

 

자료구조 배울떄 배웠단 하노이탑 문제.

이런문제 풀면 재귀는 참 추상적이라는 생각이 들떄가있다.

별다른 해설은 없음...

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys
 
input = sys.stdin.readline
 
= int(input())
li = []
 
 
def hanoi(x, f, b, t):
    # 이동할 원반수가 한개면
    if x == 1:
        li.append([f, t])
    else:
        hanoi(x - 1, f, t, b)
        li.append([f, t])
 
        hanoi(x - 1, b, f, t)
 
 
hanoi(n, 123)
print(len(li))
for _ in li:
    print(_[0], _[1])
 
cs

 

728x90