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

Problem : 재귀함수가 뭔가요?

유형 : DFS, 재귀


문제 해석

  • 재귀를 입력 횟수에 맞춰서 반복한다.

문제 재해석

  • 질문한 횟수에 따라서 답변이 달라지게 반복한다.

해결 전략 (2)

  • 질문을 n번 했다면 답을 내고 종료한다.

설계, 구현 (5)

  • 질문 횟수에 맞춰서 언더바 ____도 같이 반복하여 출력해준다.
  • n번 질문했다면 답을 내고 재귀를 끝낸다.

주의할 점

  • "와 개행문자를 조심하자

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <bits/stdc++.h>
using namespace std;

int n;


void dfs(int Q_cnt){
    print_under_bar(Q_cnt);   cout << "\"재귀함수가 뭔가요?\"\n";

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

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

    dfs(Q_cnt + 1);
    print_under_bar(Q_cnt);   cout << "라고 답변하였지.\n";
}

void print_under_bar(int k){
    cout << "____";
}

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

void input() {
    cin >> n;
}

int main()
{
   ios_base::sync_with_stdio(false);
   cin.tie(NULL);  cout.tie(NULL);
   freopen("input.txt", "r", stdin);

   input();

   return 0;
}

피드백

  • 좀 신선했던 기초 재귀문제.