白準11729号ハノイタワー移動順


質問元:https://www.acmicpc.net/submit/11729/33677793

解法


1.n-1枚の円板を6-start-endロッドに移動します。


2.最後のn番の円板を端に移動します。


3.n-1個のディスクが6-start-endロッドからendロッドに移動します。


4.作成する関数は、start->endにオリジナルを移動する関数です。


5.一番大切なのは6-start-endを思いつくこと...


answer =[]
def solve(n,start,end):
    global answer
    if n == 1:
        answer.append((start, end))
    else:
        solve(n-1,start,6-start-end) # 1단계 n-1 개의 원판을 2번 막대로 옮김
        answer.append((start,end)) # 2단계 마지막인 n번 원판을 3번 막대로 옮김
        solve(n-1,6-start-end,end) # 3단계 : 2번 원판의 n-1개의 원판을 3번 막대로 옮김

solve(int(input()),1,3)

print(len(answer))
for i in answer:
    print(i[0],i[1])