https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6dd2ca25-81ca-4bec-9f50-65bbd87dc299/__-1.jpg

def hanoi(n, a, b):
    if n > 1:
        hanoi(n-1, a, 6-a-b) # 기둥이 1개 이상이면 그룹으로 묶인 n-1개 원판을 중간으로 먼저 다 옮기겠다 1, 2, 3이기 때문에 중간은 1,3을 뺀 값
    
    print(a,b)               # n번 째 기둥이 a -> b 로 옮겨짐
    
    if n > 1:                   # 기둥이 한개 이상이면 남은 기둥 (n-1)개를 중간에서 b로 옮기겠다.
        hanoi(n-1, 6-a-b, b)

n = int(input())

print(2 ** n-1) # 총 이동해야하는 횟수
hanoi(n, 1, 3) # 3개 원판을 기둥 1에서 3으로 옮기겠다

하노이의 탑 재귀 분석 hanoi (3,1,3) 호출

print 1 → 3 (4번)