재귀함수를 사용하는 문제이다. 이 문제는 컴퓨터 과학 분야에서 매우 중요한 문제이니 꼭 숙지해야한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
def hanoi(n, from_pos=1, to_pos=3, aux_pos=2):
if n == 1:
print(from_pos, to_pos)
return
hanoi(n-1, from_pos, aux_pos, to_pos)
print(from_pos, to_pos)
hanoi(n-1, aux_pos, to_pos, from_pos)
n=int(input())
if n > 20:
print(2**n-1)
else:
print(2**n-1)
hanoi(n)
|
cs |
재귀함수라는 것이 처음에는 이해가 잘 가지 않고 머리속에서 혼란이 발생하여 어려움이 있었다. 그래서 재귀를 제대로 이해하는 것은 좀 시간이 걸릴 수 있다. 하지만 포기하지 않고 계속해서 코드를 리뷰하고 재귀 관련 문제를 풀다보면 어느새 이해를 하고 있는 나 자신을 볼 수 있을 것이다!
'Baekjoon Online Judge' 카테고리의 다른 글
[python]1182. 부분수열의 합 (0) | 2021.04.29 |
---|---|
[python]7568. 덩치 (2) | 2021.04.29 |
[python]10814.나이순 정렬 (4) | 2021.02.03 |
[python]6566.애너그램 그룹 (0) | 2021.01.27 |
[python]9020.골드바흐의 추측 (2) | 2021.01.21 |