def hanoi(n, start, end, via):
if n == 1:
print(start, end)
else:
hanoi(n-1, start, via, end)
print(start, end)
hanoi(n-1, via, end, start)
n = int(input())
print((2**n)-1)
if n <= 20:
hanoi(n,1,3,2)
문제를 봤을 때, 재귀적으로 풀면 된다는 생각은 들었지만 구현까지는 힘들었다. 이해하는데 엄청 도움이 된 링크를 첨부하겠다.
https://shoark7.github.io/programming/algorithm/tower-of-hanoi
'Development' 카테고리의 다른 글
BOJ 11650 (좌표 정렬하기) (0) | 2021.01.16 |
---|---|
BOJ 1018 (체스판 다시 칠하기) (0) | 2021.01.14 |
BOJ 1002 (터렛) (0) | 2021.01.10 |
BOJ 1316(그룹 단어 체커) (0) | 2021.01.07 |
BOJ 1577(단어공부) (0) | 2021.01.06 |