출처: 코드잇
start_peg
에서 other_peg
로 이동start_peg
에서 end_peg
로 이동other_peg
에서 end_peg
로 이동def move_disk(disk_num, start_peg, end_peg):
print("%d번 원판을 %d번 기둥에서 %d번 기둥으로 이동" % (disk_num, start_peg, end_peg))
def hanoi(num_disks, start_peg, end_peg):
# 코드를 입력하세요.
# base case
if num_disks == 0:
return
other_peg = 6 - (start_peg + end_peg) # 남은 기둥 위치 구하기
# recursive case
hanoi(num_disks-1,start_peg, other_peg) # 제일큰 원판 목표지점 이동전 other_peg에 순차적으로 쌓아두는 함수
move_disk(num_disks, start_peg, end_peg) # 제일큰 목표지점으로 이동
hanoi(num_disks-1,other_peg, end_peg)# 제일큰 원판 목표지점 이동후 순차적으로 쌓아둔 원판들 제일큰 원판 위로 다시 이동
# 테스트 코드 (포함하여 제출해주세요)
hanoi(3, 1, 3)
하노이의 탑풀이는 마치 피타고라스의 정의에 대한 원리를 해설 없이 이해하는 과정과 같은 느낌이 들었다. 문제해결 능력을 기르려면 가능한 힌트나 답안을 참고 하지 않는 것이 여러가지 각도 및 깊이 파고들어 생각 할 수 있는 능력이 길러 지기 때문에 장기적으로 좋을 것 같으면서도 확신은 서지 않는다.