👩🏻💻 문제링크
https://www.acmicpc.net/problem/17478
✍️ 아이디어
재귀 푸는법 : https://yjh0107.tistory.com/32?category=930702
1. 반복되는 작업
"재귀함수가 뭔가요?" //이건 따로 처리
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
2. input은 한단계씩 점진적으로 ( __가 반복되는 작업이 끝날때마다 하나씩 늘고있음) = 종료조건과도 연관
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
____"재귀함수가 뭔가요?"
____"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
____마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
____그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
________"재귀함수가 뭔가요?"
3. 재귀 함수의 뒷부분은 스택에 있던 함수가 사라지면서 한꺼번에 출력
________라고 답변하였지.
____라고 답변하였지.
라고 답변하였지.
✍️소스코드
- 재귀는 반복문의 확장된 형태가 아닐까? 반복문보다 함수로 더 많은걸 바꿀수 있음
#include <iostream>
#include <string>
using namespace std;
int n;
string s="____";
void recursive(int x)
{
for(int i=0; i<x; i++) cout<<s;
cout<<"\"재귀함수가 뭔가요?\""<<endl;
if(x==n)
{
for(int i=0; i<x; i++) cout<<s;
cout<<"\"재귀함수는 자기 자신을 호출하는 함수라네\""<<endl;
for(int i=0; i<x; i++) cout<<s;
cout<<"라고 답변하였지."<<endl;
return;
}
for(int i=0; i<x; i++) cout<<s;
cout<<"\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어."<<endl;
for(int i=0; i<x; i++) cout<<s;
cout<<"마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지."<<endl;
for(int i=0; i<x; i++) cout<<s;
cout<<"그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\""<<endl;
recursive(x+1);
for(int i=0; i<x; i++) cout<<s;
cout<<"라고 답변하였지."<<endl;
}
int main()
{
cin>>n;
cout<<"어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다."<<endl;
recursive(0);
}
체감난이도 | 걸린시간 | 참고 | 사용 문법 |
하 | 20min | x | 재귀 |
'PS 연습' 카테고리의 다른 글
[완전 탐색 + 백트래킹] 백준 문제 풀이 - 6603 로또 (0) | 2022.07.30 |
---|---|
[완전 탐색] 백준 문제 풀이 - 10971 외판원 순회 2 (0) | 2022.07.29 |
[완전 탐색] 백준 문제 풀이 - 15650 N과 M (2) (0) | 2022.07.17 |
[완전 탐색] 백준 문제 풀이 - 15649 N과 M (1) (0) | 2022.07.16 |
[완전 탐색] 백준 문제 풀이 - 1107 리모컨 (0) | 2022.07.12 |