
푼 날짜 : 2024.09.03
푼 문제 : [17478] / 재귀함수가 뭔가요?
사용한 언어 : python
푼 방법 :
(예제 출력의 예시를 바탕으로 작성)

재귀는 Base case 와 Recursive case로 구성된다.
Base case는 탈출 조건이기 때문에 잘 설정해주는 것이 중요하다!
따라서, 그림으로 보았을 때 "재귀함수가 뭔가요?" 하고나서 답이 달라지는 순간이 분홍색 박스의 경우이다.
해당 위치에서 달라지는 답을 출력하고 return 시켜 재귀를 탈출해주어야한다.
또한 언더바로 재귀의 깊이를 표현하고 있는데 "____" 를 얼마나 곱해주어야 하나면,
recursive(2)일 때 2-2 = 0 번 호출하고
recursive(1)일 때 2-1 = 1 번 호출하고 => ____
recursive(0)일 때 2-0 = 2 번 호출하는 식으로 구현했다. => ________
이를 위해서는 처음 값을 기억해야해서 나 같은 경우에는 num이라는 변수에 초기값을 담아두고 계산하는데 사용했다.
파란색 박스의 경우 반복되지 않는다고 판단해 따로 재귀함수 사이에서 각각 출력하도록 했다.
코드 :
import sys
N = int(sys.stdin.readline())
num = N
def recursive(N):
print("____"*(num-N)+'"재귀함수가 뭔가요?"')
if N == 0:
print("____"*(num-N)+'"재귀함수는 자기 자신을 호출하는 함수라네"')
return
else:
print("____"*(num-N)+'"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
print("____"*(num-N)+'마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.')
print("____"*(num-N)+'그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."')
N -= 1
recursive(N)
print("____"*(num-N)+'라고 답변하였지.')
print('어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.')
recursive(N)
print('라고 답변하였지.')
재귀는 Base case를 잘 파악해야한다 !
'Programming > Algorithm' 카테고리의 다른 글
[백준2470] / 두 용액 - 투포인터, 정렬 (0) | 2024.09.05 |
---|---|
[백준1806] / 부분합 - 투포인터 (!엉성함주의!) (2) | 2024.09.04 |
[백준20291] / 파일 정리 - 정렬, 파싱 (0) | 2024.08.19 |
[백준1326] / 폴짝폴짝 - 그래프(BFS) (0) | 2024.08.18 |
[백준1697] / 숨바꼭질 - 그래프(BFS) (0) | 2024.08.17 |

푼 날짜 : 2024.09.03
푼 문제 : [17478] / 재귀함수가 뭔가요?
사용한 언어 : python
푼 방법 :
(예제 출력의 예시를 바탕으로 작성)

재귀는 Base case 와 Recursive case로 구성된다.
Base case는 탈출 조건이기 때문에 잘 설정해주는 것이 중요하다!
따라서, 그림으로 보았을 때 "재귀함수가 뭔가요?" 하고나서 답이 달라지는 순간이 분홍색 박스의 경우이다.
해당 위치에서 달라지는 답을 출력하고 return 시켜 재귀를 탈출해주어야한다.
또한 언더바로 재귀의 깊이를 표현하고 있는데 "____" 를 얼마나 곱해주어야 하나면,
recursive(2)일 때 2-2 = 0 번 호출하고
recursive(1)일 때 2-1 = 1 번 호출하고 => ____
recursive(0)일 때 2-0 = 2 번 호출하는 식으로 구현했다. => ________
이를 위해서는 처음 값을 기억해야해서 나 같은 경우에는 num이라는 변수에 초기값을 담아두고 계산하는데 사용했다.
파란색 박스의 경우 반복되지 않는다고 판단해 따로 재귀함수 사이에서 각각 출력하도록 했다.
코드 :
import sys
N = int(sys.stdin.readline())
num = N
def recursive(N):
print("____"*(num-N)+'"재귀함수가 뭔가요?"')
if N == 0:
print("____"*(num-N)+'"재귀함수는 자기 자신을 호출하는 함수라네"')
return
else:
print("____"*(num-N)+'"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.')
print("____"*(num-N)+'마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.')
print("____"*(num-N)+'그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."')
N -= 1
recursive(N)
print("____"*(num-N)+'라고 답변하였지.')
print('어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.')
recursive(N)
print('라고 답변하였지.')
재귀는 Base case를 잘 파악해야한다 !
'Programming > Algorithm' 카테고리의 다른 글
[백준2470] / 두 용액 - 투포인터, 정렬 (0) | 2024.09.05 |
---|---|
[백준1806] / 부분합 - 투포인터 (!엉성함주의!) (2) | 2024.09.04 |
[백준20291] / 파일 정리 - 정렬, 파싱 (0) | 2024.08.19 |
[백준1326] / 폴짝폴짝 - 그래프(BFS) (0) | 2024.08.18 |
[백준1697] / 숨바꼭질 - 그래프(BFS) (0) | 2024.08.17 |