[2021년 08월 13일 22시 40분 작성]
[PS][재귀]
BOJ 17478 : 재귀함수가 뭔가요?
[문제 링크 : 클릭]
1. 풀이
출력 예시를 보고, 재귀함수를 적절하게 설계하는 문제였습니다.
가장 깊이 있는 부분의 기저사례에 유의하여 재귀를 설계해주면 됩니다.
2. 소스코드
[Github 링크 : 클릭]
#include <bits/stdc++.h>
using namespace std;
int n;
const string tmp = "____";
string str[5] = {"\"재귀함수가 뭔가요?\"\n",
"\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n",
"마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n",
"그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n",
"\"재귀함수는 자기 자신을 호출하는 함수라네\"\n"
};
void Solve(int k)
{
if(k==n) //기저사례
{
for(int i=0; i<5; i+=4) //str[0], str[4]를 출력
{
for(int j=0; j<k; j++) cout<<tmp;
cout<<str[i];
}
for(int j=0; j<k; j++) cout<<tmp;
cout<<"라고 답변하였지.\n";
return;
}
for(int i=0; i<4; i++)
{
for(int j=0; j<k; j++) cout<<tmp;
cout<<str[i];
}
Solve(k+1);
for(int j=0; j<k; j++) cout<<tmp;
cout<<"라고 답변하였지.\n";
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin>>n;
cout<<"어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n";
Solve(0);
return 0;
}
3. 복기
- 좀 더 깔끔하게 풀 수 있지 않았을까..
- 정답 제출은 좀 더 신중하게 ..
'PS > BOJ' 카테고리의 다른 글
[PS][완전탐색] BOJ 17484 - 진우의 달 여행(Small) (0) | 2021.08.13 |
---|---|
[PS][자료구조] BOJ 17479 : 정식당 (0) | 2021.08.13 |
[PS][DP] BOJ 9764 : 서로 다른 자연수의 합 (0) | 2021.08.09 |
[PS][BFS] BOJ 9177 : 단어 섞기 (0) | 2021.08.08 |
[PS][DP] 14916 : 거스름돈 (0) | 2021.08.08 |