일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스
- 디포전
- h4ckinggame
- bob
- 디지털 포렌식 트랙
- cve-2022-26923
- 필기
- Active Directory
- Best of the Best
- malware
- dll side-loading
- BoB 12기
- race condition
- 디지털 포렌식 전문가 2급
- 논문리뷰
- 디포전 2급
- 뮤텍스
- DLL 사이드로딩
- 정보보안기사
- 정보기
- 코드엔진
- BoB 12기 최종합격 후기
- cve-2024-6387
- CodeEngn
- 세마포어
- 리버싱
Archives
- Today
- Total
SEO
[백준/C언어] 재귀함수가 뭔가요?_17478번_nabi 본문
반응형
첫번째 제출 때는 프로토타입 선언 부분에 수정하지 않은 부분이 있어 컴파일 에러가 났고
두번째 제출 때는 출력값 오타 때문에 컴파일 에러가 났다.
두번 모두 어이없는 이유로 틀렸다.
최종 제출 코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int recursion(int num, int num2);
int main() {
int N;
scanf("%d", &N);
printf("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n");
recursion(N, N);
return 0;
}
int recursion(int num,int num2) { //재귀에 사용할 num과 기존의 값을 유지하는 num2
int i;
if (num > 0) {
for (i = 0; i < num2 - num; i++) {
printf("____");
}
printf("\"재귀함수가 뭔가요?\"\n");
for (i = 0; i < num2 - num; i++) {
printf("____");
}
printf("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n");
for (i = 0; i < num2 - num; i++) {
printf("____");
}
printf("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n");
for (i = 0; i < num2 - num; i++) {
printf("____");
}
printf("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n");
return recursion(num - 1, num2);
}
else if (num == 0) { //num이 0이 될 경우 기존 num2 숫자만큼 반복이 됨
for (i = 0; i < num2; i++) {
printf("____");
}
printf("\"재귀함수가 뭔가요?\"\n");
for (i = 0; i < num2; i++) {
printf("____");
}
printf("\"재귀함수는 자기 자신을 호출하는 함수라네\"\n");
return recursion(num - 1, num2);
}
else if (num2 + num != -2) { //num2+num이 -2가 되지 않을 경우
for (i = 0; i <= num2 + num; i++) {
printf("____");
}
printf("라고 답변하였지.\n");
return recursion(num - 1, num2);
}
else //num2+num == -2가 될 경우 함수 종료
return 0;
}
반복문 부분을 함수로 선언해서 사용해주어도 더 간결하고 보기 편할 것 같아서 아래처럼 바꾼 코드
더 간결한 코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void repeat(int number);
int recursion(int num, int num2);
int main() {
int N;
scanf("%d", &N);
printf("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n");
recursion(N, N);
return 0;
}
void repeat(int number) {
int i;
for (i = 0; i < number; i++) {
printf("____");
}
}
int recursion(int num,int num2) { //재귀에 사용할 num과 기존의 값을 유지하는 num2
int i;
if (num > 0) {
repeat(num2 - num);
printf("\"재귀함수가 뭔가요?\"\n");
repeat(num2 - num);
printf("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n");
repeat(num2 - num);
printf("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n");
repeat(num2 - num);
printf("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n");
return recursion(num - 1, num2);
}
else if (num == 0) { //num이 0이 될 경우 기존 num2 숫자만큼 반복이 됨
repeat(num2);
printf("\"재귀함수가 뭔가요?\"\n");
repeat(num2);
printf("\"재귀함수는 자기 자신을 호출하는 함수라네\"\n");
return recursion(num - 1, num2);
}
else if (num2 + num != -2) { //num2+num이 -2가 되지 않을 경우
repeat(num2+num+1);
printf("라고 답변하였지.\n");
return recursion(num - 1, num2);
}
else //num2+num == -2가 될 경우 함수 종료
return 0;
}
반응형
'코딩테스트 > 문제 풀이' 카테고리의 다른 글
[백준/C언어] 카드 2 (원형큐/선형큐/데크) (1) | 2024.03.28 |
---|---|
[백준/C언어] 큐_10845번_nabi (0) | 2022.03.29 |
[백준/C언어] 별 찍기-9_2446번_nabi (0) | 2022.01.23 |
[백준/C언어] 직각삼각형_4153번_nabi (0) | 2022.01.14 |
[백준/C언어] 스택_10828번_nabi (0) | 2022.01.13 |