컴굥일지

[BOJ/백준 17478][C++] 재귀함수는 뭔가요? 본문

알고리즘/코테 문제

[BOJ/백준 17478][C++] 재귀함수는 뭔가요?

gyong 2022. 4. 30. 22:12
반응형

문제

https://www.acmicpc.net/problem/17478

백준 17478
백준 17478

 

문제 내용

숫자를 입력받아서, 위와 같이 재귀적인 응답을 출력하는 문제이다.

 

문제 풀이

재귀 함수를 만들어 풀면 된다.

다만, 이 문제에서 주의해야 할 점은, ----가 아닌 ____(언더바)라는 것이며, 공백도 주의해야 한다.

따옴표 또한 출력해야 하기 때문에 \" 같은 방식으로 작성해야 한다.

마지막으로, 함수를 만들 때 return type을 int로 하면 백준에서 런타임 에러가 발생했다.

void로 하는 것을 추천한다.

 

코드

#include <iostream>
using namespace std;

string str="";

void recur(int n) {
	
	string line = str;

	if (n==0) {
		cout << line << "\"재귀함수가 뭔가요?\"\n";
		cout << line << "\"재귀함수는 자기 자신을 호출하는 함수라네\"\n";
		cout << line << "라고 답변하였지.\n";
		return ;
	}

	cout << line << "\"재귀함수가 뭔가요?\"\n";
	cout << line << "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n";
	cout << line << "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n";
	cout << line << "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n";

	str += "____";
	recur(n - 1);

	cout << line << "라고 답변하였지.\n";
}

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	//입력
	int n;
	cin >> n;

	//결과 출력
	cout << "어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n";
	recur(n);
}
반응형
Comments