파이썬, 하노이 탑(hanoi tower) 재귀호출 및 반복문
다음은 하노이 탑 재귀 호출 예제입니다.
def hanoi(n, 시작, 보조, 목표):
if n==1:
print(시작, '->', 목표)
return
hanoi(n-1, 시작, 목표, 보조)
print(시작, '->', 목표)
hanoi(n-1, 보조, 시작, 목표)
print("n=1")
hanoi(1, 1, 2, 3)
print("n=2")
hanoi(2, 1, 2, 3)
print("n=3")
hanoi(3, 1, 2, 3)
다음은 하노이탑 반복문 예제입니다.
(참조: http://blog.naver.com/PostView.nhn?blogId=sexyback8034&logNo=221085188558)
시작=1
보조=2
목표=3
signal = 1
n = int(input())
stack = [n, 1, 2, 3]
cnt = 0
while stack:
목표 = stack.pop()
보조 = stack.pop()
시작 = stack.pop()
n = stack.pop()
if n==1:
print(시작, '->', 목표)
cnt += 1
signal = 0
continue
if signal == 0:
print(시작, '->', 목표)
cnt += 1
signal = 1
stack.append(n-1)
stack.append(보조)
stack.append(시작)
stack.append(목표)
continue
stack.append(n)
stack.append(시작)
stack.append(보조)
stack.append(목표)
if signal != 0:
stack.append(n-1)
stack.append(시작)
stack.append(목표)
stack.append(보조)
print("%d번 이동" %cnt)
<이상>
'Python 기초' 카테고리의 다른 글
파이썬, 거듭제곱 재귀호출 함수 예제 (0) | 2020.08.10 |
---|---|
파이썬, 버블 정렬, 선택 정렬, 삽입 정렬 예제 (0) | 2020.08.07 |
파이썬, 조합과 순열 구하기 (백트래킹) (0) | 2020.07.07 |
파이썬, 유효한 괄호쌍 출력하기 (백트래킹) (0) | 2020.07.06 |
파이썬, 가능한 N자리 이진수 경우의 수 (백트래킹 이용) (0) | 2020.07.06 |