17478: 재귀함수가 뭔가요?

2022. 5. 5. 14:09C언어/백준

-Silver5

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

 

17478번: 재귀함수가 뭔가요?

평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대

www.acmicpc.net

 

-결과

 

-코드

#include <stdio.h>
int N;
const char *str[7] = {
    "\"재귀함수가 뭔가요?\"",
    "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.",
    "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.",
    "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"",
    "\"재귀함수가 뭔가요?\"",
    "\"재귀함수는 자기 자신을 호출하는 함수라네\"",
    "라고 답변하였지."
};
void message(int n){
    for (int i = 0; i < 4; i++){
        for (int j = 1; j < n; j++) printf("____");
        puts(str[i]);
    }
    if (n != N) message(n+1);
    else 
        for (int i = 4; i < 7; i++){
            for (int j = 0; j < n; j++) printf("____");
            puts(str[i]);
        }
    for (int j = 1; j < n; j++) printf("____");
    puts(str[6]);
}
int main(){
    scanf("%d", &N);
    puts("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
    message(1);
}

 

-풀이

const char *str은 char *str을 상수화 하는 것으로, 포인터 str이 가리키는 내용을 상수화 한다.

"재귀함수가 뭔가요?" ~ "그의 답은 대부분 옳았다고 하네.~ 한 선비가 찾아와서 물었어."를 반복하기 때문에 for문으로 str[0]부터 str[3]까지 반복해서 출력한다.

그리고  str[4]부터 str[6]까지 출력하게 한 후에, str[6]을 반복해서 출력하게 하는 message 함수를 만든다.

 

'C언어 > 백준' 카테고리의 다른 글

10814: 나이순 정렬  (0) 2022.05.09
7568: 덩치  (0) 2022.05.09
2751: 수 정렬하기2  (0) 2022.05.05
2609: 최대공약수와 최소공배수  (0) 2022.05.05
1436: 영화감독 숌  (0) 2022.05.01