반응형
https://cafe.naver.com/mitcari
MIT 코딩.알고리즘 연구원 : 네이버 카페
학교 교육에서 의무적으로 실시되는 소프트웨어 및 C언어와 알고리즘을 전문적으로 지도합니다.
cafe.naver.com
[문제 풀이]
1. 배열의 크기가 7인 자료형 배열을 선언합니다.
2. 오름차순으로 정렬하는 것처럼 swap 매크로를 만듭니다.
#include <stdio.h>
void check(int arr[7])
{
int swap=0;
for (int i = 0; i < 7; i++)
{
scanf("%d", &arr[i]);
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 6; j++)
{
if (arr[j] > arr[j + 1])
{
swap = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = swap;
}
}
}
for (int i = 0; i < 7; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int arr[7] = { 0 };
check(arr);
return 0;
}
|
cs |
[문제 풀이]
- 재귀함수를 사용하여 풀어야 한다.
- 반복적인 행동을 할 때 재귀 함수가 유용하다는 것을 알게 되었다.
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int sum = 0;
int print(int a)
{
sum += a;
if (a <=0)
{
printf("%d", sum);
return ;
}
return print(a - 1);
}
int main()
{
int a;
scanf("%d", &a);
print(a);
return 0;
}
|
cs |
입력받은 값을 계속해서 -1 시켜주면서 함수가 실행되도록 한다.
<재귀 함수>
[문제 풀이]
-평소 푸는 것처럼 배열의 첫 번째 원소에 1을 넣고 증가시키면서 하려고 했지만, 재귀 호출이 필요한 문제라 고민이 많았다.
-재귀 호출을 반복문으로 생각하고 n/2 번째 원소와 n-1번째를 계속 호출하도록 해봤다.
#include <stdio.h>
int print(int n)
{
if (n == 1)
{
return 1;
}
return print(n - 1) + print(n / 2);
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%d\n", print(n));
}
|
cs |
-생각보다 짧고 쉽게 풀렸다.
'programming language > C언어 기초 문제풀이' 카테고리의 다른 글
[문자열]: 기본문제1 (0) | 2021.07.15 |
---|---|
[함수]: 기본문제4 (0) | 2021.07.11 |
[함수]: 기본문제2 (0) | 2021.07.08 |
[함수]: 기본문제 풀이 (0) | 2021.07.07 |
배열기초문제4 (0) | 2021.07.02 |