Written by
최태열
on
on
[Python][프로그래머스][Level3] 하노이 탑
[Python][프로그래머스][Level3] 하노이 탑
코드
answer=[]
def hanoi(x,y,z,num):
if num==1:
answer.append([x,y])
return
hanoi(x,z,y,num-1)
hanoi(x,y,z,1)
hanoi(z,y,x,num-1)
def solution(n):
hanoi(1,3,2,n)
return answer
재귀 문제로 유명한 하노이탑이다.
1의 위치에서 N개가 3으로 가는 방법은 N-1개를 2번에 옮기고 N번째 판을 3번으로 옮기고 N-1개를 다시 3번으로 옮기는 것이다.
N-1개를 2번으로 옮기는 방법도 N-2개를 3으로 옮긴 후 N-1번째 판을 2번으로 옮기고 N-2개를 다시 2번으로 옮긴다.
이 과정을 반복하는 것이다.
단, 1개일 경우 중간에 거치는 것 없이 바로 이동하면 된다.
Discussion and feedback