아이디어 1
- 원판들이 있는 장대의 번호(start = 1), 원판들을 옮기고 싶은 장대의 번호(end = 3)을 알고 있음.
- 그럼 남은 장대의 번호는 1+2+3 = 6이기때문에, 6-start-end 로 구할 수 있다!
아이디어2
사실 아직까지는 재귀 알고리즘이 한번에 생각나지 않고, 저렇게 작은 숫자를 대입해서 직접 그려봐야 반복되는 것이 보인다.
import sys
input= sys.stdin.readline
def hanoi(n, start, end) :
if n == 1 :
print(start, end)
return
hanoi(n-1, start, 6-start-end)
print(start, end)
hanoi(n-1, 6-start-end, end)
n=int(input().strip())
k = 2**n-1
print(k)
hanoi(n, 1, 3)
'Algoritm' 카테고리의 다른 글
[백준] 10808번 : 알파벳 개수 (0) | 2022.09.30 |
---|---|
[백준] 4344번 : 평균은 넘겠지 (python) (0) | 2022.09.30 |
[백준]10870번: 피보나치 수5(python) (0) | 2022.09.27 |
[백준] 2178번 : 미로 탐색 (python) (0) | 2022.07.12 |
[백준] 1874번: 스택 수열 (python) (0) | 2022.07.06 |