1. 문제
https://www.acmicpc.net/problem/17478
17478번: 재귀함수가 뭔가요?
평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대
www.acmicpc.net
출력예시에 맞게 챗봇의 응답을 출력하는 문제이다.
문제 이름에서도 알 수 있듯이 재귀함수를 활용해야 한다.
입력과 출력의 예시는 다음과 같다.
2. 풀이
입력받은 숫자 T는 재귀함수를 몇 번 호출하는지를 나타내는 숫자이다.
최초로 함수가 한번 호출되고, 재귀로 T번 호출되기 때문에 함수는 총 T+1번 실행이 되는데 이 부분을 생각하는 게 포인트였다.
우선 주어진 예시에서 각 문장이 어떻게 등장하고 있는지 살펴보자.
어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. 라는 문장이 최초 1번만 등장한다.
즉 재귀호출이 필요 없으므로 시작하자마자 출력해주면 된다.
그다음 "재귀함수가 뭔가요?"라는 질문이 T+1번 등장하고 있다.
그에 대한 답변으로 스토리텔링하는 부분이 T번 등장한다.
"재귀함수가 뭔가요?"라는 질문과 스토리텔링이 번걸아가며 나오다가
마지막 질문에서 "재귀함수는 자기 자신을 호출하는 함수라네"라는 답변이 등장한다.(T+1번째 질문에 대한 답변)
즉 재귀함수 내에서 조건문을 잘 작성해서 T+1번째에는 다른 답변이 나오게 코드를 짜주면 된다.
그리고 '___라고 답변하였지' 라는 형태로 마무리되는데, 이 문장은 다른 문장과 번갈아가며 나오는 게 아니라 마지막에 몰아서 한 번에 출력되고 있다.
재귀함수의 호출이 끝난 뒤에 '라고 답변하였지' 라는 문장을 출력하면 마지막에 몰아서 한번에 출력되게 할 수 있다.
_의 개수 조정은 몇 번째 호출인지를 매개변수로 전달해서 _가 출력되는 개수를 조정할 수 있다.
3. 코드
4. 느낀점
DFS 알고리즘을 더 잘 이해하기 위해 재귀함수를 공부할 필요를 느꼈다.
이번 문제는 재귀함수의 이모저모를 살펴볼 수 있는 좋은 문제였다.
다음엔 DFS 알고리즘을 활용하여 문제를 풀어보자.
오늘 하루도 쌓였다.
'코딩 테스트 연습 > 백준' 카테고리의 다른 글
[Python]Baekjoon 7576번: 토마토(BFS) (0) | 2024.03.11 |
---|---|
[Python]Baekjoon 1697번: 숨바꼭질 (0) | 2024.03.05 |
[Python]Baekjoon 2178번: 미로 탐색(BFS) (0) | 2024.03.03 |
[Python]Baekjoon 1012번: 유기농 배추(BFS) (0) | 2024.03.02 |
[Python]Baekjoon 2606번: 바이러스(DFS) (0) | 2024.03.01 |