본문 바로가기
알고리즘

[python]재귀 - 하노이의 탑

by ujin2021 2021. 4. 24.

[참고 블로그]

shoark7.github.io/programming/algorithm/tower-of-hanoi

 

'하노이의 탑' 이해하기

'하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를 구하는 일반항까지 수학적으로 유도합니다.

shoark7.github.io

[코드]

# 하노이의 탑 경로출력 - 출처 : https://shoark7.github.io/programming/algorithm/tower-of-hanoi
MSG_FORMAT = "{}: {} -> {}"

def move(N, start, to):
    print(MSG_FORMAT.format(N, start, to))

def hanoi(N, start, to, via):
    if N == 1:
        move(1, start, to)
    else:
        hanoi(N-1, start, via, to) # 제일 큰 원반을 제외하고 모두 경유지에 쌓는다
        move(N, start, to) # 제일 큰 원반을 도착지로 옮긴다
        hanoi(N-1, via, to, start) # 경유지에 있던 모든 원반을 다시 도착지로 옮긴다

hanoi(2, 'A', 'C', 'B')
print()
hanoi(3, 'A', 'C', 'B')
print()
hanoi(4, 'A', 'C', 'B')

 

[설명]

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

[python]programmers - 메뉴리뉴얼  (0) 2021.07.21
[python]programmers - 더맵게  (0) 2021.07.20
[python] dijkstra 알고리즘  (0) 2021.03.22
[python]programmers-소수찾기  (0) 2021.02.26
[python]programmers-방금그곡  (0) 2020.11.30