몸과 마음이 건전한 SW 개발자

백준 GOLD 5 [11729번] 하노이 탑 이동 순서 {언어 : Python} [다시 풀어 보기] 본문

알고리즘/다시 풀어 보기

백준 GOLD 5 [11729번] 하노이 탑 이동 순서 {언어 : Python} [다시 풀어 보기]

스위태니 2025. 2. 14. 16:32

문제 링크

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

정답 코드

n = int(input())
dp = [0] * 21
dp[1] = 1
for i in range(2, 21):
    dp[i] = dp[i-1] * 2 + 1
print(dp[n])
def hanoi(number, start, end, assist):
    if number == 1:
        print(start, end)
        return
    else:
        hanoi(number-1, start, assist, end)
        print(start, end)
        hanoi(number-1, assist, end, start)
hanoi(n, 1, 3, 2)

풀이 방법

  1. 파라미터에 숫자, 시작 지점, 옮길 위치, 경유할 위치로 구분한다.
  2. 숫자가 1인 경우 한 번만 이동하면 된다.
  3. 나머지는 이 풀이를 보면 좋을 것 같다.

https://mgyo.tistory.com/185

 

'하노이의 탑' 이해하기 (feat. 재귀 함수)

들어가며 하노이의 탑 문제 소개 문제 정의 아이디어 얻기 아이디어 재귀 출발점, 도착점, 경유점 문제 분해 실제 코드 번외 : 원반의 개수에 따른 총 이동횟수 구하기 마무리 자료 출처 https://www

mgyo.tistory.com

느낀점

  • 하노이탑은 재귀라기보단 수학 문제에 가까운 것 같다.