개인공부/알고리즘
[level 3] Title: 하노이의 탑 파이썬
KEEMSY
2022. 5. 31. 16:42
하노이 탑은 재귀로 풀어야한다고 들어보기만 하였다. 재귀는 아직 연습이 부족한지, 생각만 해도 머리가 지끈거린다...
현재의 내 머리로는 잘 이해가 가지 않아 유튜브 영상을 보고 이해 한 뒤, 코드를 작성했다.
재귀함수에서는 종료 조건이 필수적이기에, n == 1일 때 answer에 값을 더해줌으로써 재귀를 멈추었다.
def solution(n):
answer = []
def hanoi(n, start, end, mid):
nonlocal answer
if n == 1:
answer.append([start, end])
else:
hanoi(n-1, start, mid, end)
answer.append([start, end])
hanoi(n-1, mid, end, start)
hanoi(n, 1,3,2)
return answer
코드 제출 후, 다른사람들의 풀이를 보는데 다른건 다 이해가 가는데(찾아보고나서), 이건 이해가 잘 안간다..
def hanoi(f, t, m, n):
if n == 0:
return []
return hanoi(f, m, t, n-1) + [[f, t]] + hanoi(m, t, f, n-1)
def solution(n):
return hanoi(1, 3, 2, n)
공부를 더 해봐야할 듯하다..
코딩테스트 연습 - 하노이의 탑
하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대
programmers.co.kr
728x90