코딩테스트 연습 복기용

하노이 탑 문제

01241 2023. 2. 23. 16:36

어제 자기 전에 재귀함수 공부하다가 잡았던 문제이다.

알고리즘 자체는 어렵지 않은데 코딩으로 옮기기 생각보다 난감했던 문제이다.

N = int(input())
def hanoi(s, e, k):
    another = 6 - e - k
    if s > 1:
        hanoi(s-1, e, another)
    print(e, k)
    if s > 1:
        hanoi(s-1, another, k)
        
print(2**N-1)
hanoi(N,1,3)

밑의 2**N -1 은 풀어써도 돼지만, 규칙성 찾아서 빠르게 계산하기 위해 사용했다.