옛날에 하노이 탑을 직접 해봐서 규칙이 있다는 것을 알았다. 하지만 코드로 구현하는데 어려움을 겪었다.
재귀 호출을 통해 구현할 수 있는데 재귀함수 하나를 정의해야한다.
f(n,a,b,c) → n개의 원판이 a기둥에 있을 때, c기둥으로 모두 이동 시키는 함수
- n-1개의 원판을 2번기둥으로 옮김
- 1번 기둥에 남아있는 한개의 원판을 3번으로
- 2번기둥에 있는 n-1개의 원판을 3번 기둥으로
def f(n, a, b, c):
if(n == 1):
print(a, c, sep = " ")
else:
f(n-1, a, c, b)
f(1, a, b, c)
f(n-1, b, a, c)
n = int(input())
print(2**n-1)
if(n <= 20):
f(n, 1, 2, 3)
위 코드로 하노이탑의 순서를 나타낼 수 있다.
'알고리즘 > 백준' 카테고리의 다른 글
16968. 배열 복원하기 (0) | 2022.06.04 |
---|---|
15591. Mootube (0) | 2022.05.01 |
10819. 차이를 최대로 (0) | 2022.04.24 |
17299. 오등큰수 (0) | 2022.04.11 |
15681. 트리와 쿼리 (0) | 2022.04.07 |