문제
https://www.acmicpc.net/problem/17478
문제 요약
평소에 교수님은 재귀 함수가 무엇인지에 대한 많은 질문을 받아왔다.
재귀함수가 무엇인지 물어보는 학생들을 위해 자동 응답 챗봇을 만들었다.
재귀 횟수 N이 주어질 때, 챗봇의 응답 결과를 출력한다.
코드
#include <iostream>
using namespace std;
int n;
void dfs(int cnt) {
// 마지막 대답 출력 후 종료
if (cnt == n) {
for (int i = 0; i < cnt; i++) {
cout << "____";
}
cout << "\"재귀함수가 뭔가요?\"\n";
for (int i = 0; i < cnt; i++) {
cout << "____";
}
cout << "\"재귀함수는 자기 자신을 호출하는 함수라네\"\n";
for (int i = 0; i < cnt; i++) {
cout << "____";
}
cout << "라고 답변하였지.\n";
return;
}
for (int i = 0; i < cnt; i++) {
cout << "____";
}
cout << "\"재귀함수가 뭔가요?\"\n";
for (int i = 0; i < cnt; i++) {
cout << "____";
}
cout << "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n";
for (int i = 0; i < cnt; i++) {
cout << "____";
}
cout << "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n";
for (int i = 0; i < cnt; i++) {
cout << "____";
}
cout << "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n";
dfs(cnt + 1);
for (int i = 0; i < cnt; i++) {
cout << "____";
}
cout << "라고 답변하였지.\n";
}
int main() {
// 입출력 속도 향상
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
// 첫 문장
cout << "어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n";
dfs(0);
return 0;
}
코드 설명
재귀 함수를 이용하여 문제를 해결한다.
고찰
오타가 있는지 꼼꼼히 살펴야 한다.
'Algorithm Problems > 기타' 카테고리의 다른 글
[백준/C++] 11729번 하노이 탑 이동 순서 (3) | 2024.11.13 |
---|---|
[백준/C++] 1780번: 종이의 개수 (1) | 2024.10.28 |
[백준/C++] 1074번: Z (1) | 2024.08.15 |
[백준/C++] 2447번: 별찍기 - 10 (1) | 2024.08.10 |
[백준/C++] 28135번: Since 1973 (0) | 2024.05.25 |