반응형
https://programmers.co.kr/learn/courses/30/lessons/12946?language=python3
코딩테스트 연습 - 하노이의 탑
하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대
programmers.co.kr
내가 한 풀이
n=1일 경우
1번 탑에서 3번 탑으로 이동 = 1
n=2일 경우
1번 탑에서 1번째 판 2번 탑으로 이동
1번 탑에서 2번째 판 3번 탑으로 이동
2번 탑에서 1번째 판 3번 탑으로 이동
=> n=1일 경우 3번 반복
n=3일 경우
1번 탑에서 1,2번째 판 2번 탑으로 이동 => n=2일 경우
1번 탑에서 3번 판 3번 탑으로 이동 => n=1일 경우
2번 탑에서 1,2번째 판 3번 탑으로 이동 => n=2일 경우
일반화를 하면
n개의 판을 옮기는 방법은
n-1개 판 2번 탑으로 옮기는 경우+1개 판 3번 탑으로 옮기는 경우+ n-1개 판 3번 탑으로 옮기는 경우 이다.
따라서 재귀함수를 이용해 문제를 해결해야 한다.
def hanoi(n,start,end,mid):
global 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)
def solution(n):
global answer
answer = []
hanoi(n,1,3,2)
return answer
'language > python' 카테고리의 다른 글
[파이썬/python] 순열(permutations)과 조합(combinations) (1) | 2021.10.03 |
---|---|
파이썬 힙(heapq) 모듈 (0) | 2021.09.30 |
파이썬 내장함수 map (0) | 2021.09.03 |