본문 바로가기
IT/알고리즘

1일 N알고리즘 - #32

by Sungjun_ 2020. 5. 31.

문제

https://www.acmicpc.net/problem/11729

 

11729번: 하노이 탑 이동 순서

세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로

www.acmicpc.net

문제는 위 사이트를 참고해주세요.

 


풀이

N = int(input())
def hanoi(n, start, to, end):
    if n == 1:
        print(start, end)
    else:
        hanoi(n-1, start, end, to)
        print(start, end)
        hanoi(n-1, to, start, end)
print(2**N-1)
hanoi(N, 1, 2, 3)

 

하노이 탑을 어떻게 코딩해야할지 몰라서 고생했네요.

위에 코드가 최종 코드고

아래 코드가 하노이 탑 코드를 이해하기 위해서 만들어본 코드입니다.

N = int(input())
moveList = []
def hanoi(n, start, to, end):
    if n == 1:
        return moveList.append([start, end])
    else:
        print("1")
        hanoi(n-1, start, end, to)
        print("moveList1", moveList)
        print("2")
        moveList.append([start, end])
        print("moveList2", moveList)
        print("3")
        hanoi(n-1, to, start, end)
        print("moveList3", moveList)
hanoi(N, 1, 2, 3)
print(moveList)

 


결과

결과 화면

'IT > 알고리즘' 카테고리의 다른 글

1일 N알고리즘 - #34  (0) 2020.06.01
1일 N알고리즘 - #33  (0) 2020.06.01
1일 N알고리즘 - #31  (0) 2020.05.28
1일 N알고리즘 - #30  (0) 2020.05.28
1일 N알고리즘 - #29  (0) 2020.05.27

댓글