코딩테스트/파이썬
백준 11729번 하노이 탑 이동 순서
도리닥
2021. 1. 30. 11:32
728x90
문제 설명
재귀함수의 인자로는 총 세 개를 설정했다. a에서 b로 n개 옮긴다는 뜻이다. n이 1이면 한 개만 옮기면 된다는 뜻이므로 a와 b를 출력했고 n이 1이 아닐 경우 a에서 b가 아닌 다른 쪽, 즉 6-a-b로 n-1개 옮긴 후 a에서 b로 옮긴 후 다시 6-a-b에서 b로 n-1개 옮기도록 했다.
전체 코드
def func(a,b,n):
if n == 1:
print("%d %d" % (a,b))
return 0
else:
func(a,6-a-b,n-1)
print("%d %d" % (a,b))
func(6-a-b,b,n-1)
return 0
def main():
num = int(input())
print(2 ** num - 1)
func(1,3,num)
if __name__ == "__main__":
main()
728x90
반응형