17478: 재귀함수가 뭔가요?
2022. 5. 5. 14:09ㆍC언어/백준
-Silver5
https://www.acmicpc.net/problem/17478
-결과
-코드
#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 |