boj 17478 재귀함수가 뭔가요? cpp

백준 17478 재귀함수가 뭔가요? c++

 

재귀함수를 농으로 설명할 때 다음의 일화를 들려주곤 한다.

그런데 이걸 문제로 내다니.. 단단히 미친 것 같다는 생각이 들었다.

아무튼 원리는 이렇다.

 

재귀함수는 뭔가요 ~ 그의 답은 대부분~ 부분. (4줄)

재귀함수가 뭔가요 ~ 재귀함수는 자기 자신을 ~ 부분 (2줄)

라고 답변하였지 부분.

이들 조합을 잘 살펴보면 다음의 구조를 갖는다는 것을 알 수 있다.

 

if depth == 입력받은 iter 변수

2줄 출력.

else

4줄 출력.

재귀

라고 답변하였지 부분 출력.

 

여기서 depth는 내가 임의로 설정해준 것으로써 0부터 iter 까지 올라간다.

재귀를 거듭할수록 올라가는 것.

depth == iter 부분이 expire되는 지점이다.

정답 코드는 아래와 같다.

 

#include <bits/stdc++.h>
using namespace std;

void coutDepth(int depth) {
    while (depth--) {
        cout << "____";
    }
    return;
}

void recursiveFunc(int iter, int depth) {
    if (depth == iter) {
        coutDepth(depth);
        cout << "\"재귀함수가 뭔가요?\"\n";
        coutDepth(depth);
        cout << "\"재귀함수는 자기 자신을 호출하는 함수라네\"\n";
        coutDepth(depth);
        cout << "라고 답변하였지.\n";
    }
    else {
        coutDepth(depth);
        cout << "\"재귀함수가 뭔가요?\"\n";
        coutDepth(depth);
        cout << "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n";
        coutDepth(depth);
        cout << "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n";
        coutDepth(depth);
        cout << "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n";
        recursiveFunc(iter, depth + 1);
        coutDepth(depth);
        cout << "라고 답변하였지.\n";
    }
}

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

    cout << "어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n";

    int iter;
    cin >> iter;
    recursiveFunc(iter, 0);
    return 0;
}

 

'Algorithm' 카테고리의 다른 글

BOJ 1259 팰린드롬수 c++  (0) 2020.11.09
BOJ 1085 직사각형에서 탈출 c++  (0) 2020.11.07
boj 1012 c++ 유기농 배추  (0) 2020.09.07
boj 4889 c++ 안정적인 문자열  (0) 2020.09.04
boj 9012 c++ 괄호  (0) 2020.09.03
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom