본문 바로가기
IT/알고리즘

백준 - 1914번

by Sungjun_ 2020. 11. 18.

문제

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

 

1914번: 하노이 탑

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

www.acmicpc.net

 


코드

def move(N, x, y):
    if N > 1:
        move(N-1, x, 6-x-y)

    print(str(x) + ' ' + str(y))

    if N > 1:
        move(N-1, 6-x-y, y)

N = int(input())
print(2 ** N - 1)	# 횟수
if N <= 20:
    move(N, 1, 3)

 

원반이 움직이는 횟수는 2의 n승 - 1이기 때문에 먼저 횟수를 출력해주고

N이 20 이하일 때만 순서를 출력하게 합니다.

 

위 코드와 관련해서는

 

https://sung-jun.tistory.com/109

 

알고리즘 - 재귀 알고리즘(2)

재귀 알고리즘 중 대표적인 하노이 탑을 보겠습니다. 일단 3개의 원반을 1번 기둥에서 3번 기둥으로 옮긴다고 했을 때 순서는 1번 원반을 1기둥에서 3기둥으로 2번 원반을 1기둥에서 2기둥으로 1번

sung-jun.tistory.com

위 글을 확인해주세요.

'IT > 알고리즘' 카테고리의 다른 글

알고리즘 - 재귀 알고리즘(3)  (1) 2020.11.19
백준 - 17478번  (0) 2020.11.18
알고리즘 - 재귀 알고리즘(2)  (0) 2020.11.18
알고리즘 - 재귀 알고리즘(1)  (0) 2020.11.16
백준 - 5430번  (0) 2020.11.13

댓글