๋ถํ ํ ๋ฌธ์ ์ ๋ต์ ๊ธฐ์ตํด ๋๊ณ , ์ด๋ฅผ ์ฌ์ฌ์ฉํจ์ผ๋ก์จ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ๋ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ๋ค๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ
์ํฅ์ ์ ๊ทผ๋ฐฉ๋ฒ
๐ฉ ํน์ง
๊ฐ ์๋ฌธ์ ๋ ์๋ ์ฃผ์ด์ง ๋ฌธ์ ์ ๋์ผํ ๋ฌธ์ ๐ ์ ๋ ฅ ํฌ๊ธฐ๋ง ์์์ง ๋ฌธ์
์๋ฌธ์ ๋ค์ ์๋ก ๋ ๋ฆฝ์ผ ํ์์๋ค.
ํด๋ฅผ ๊ตฌ์ถํ๋๋ฐ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ค.
์ต์๊ฐ/์ต๋๊ฐ์ ๊ตฌํ๋ ์ต์ ํ ๋ฌธ์ ์ ์ฃผ๋ก ์ฌ์ฉ
"์ต์ ์ฑ์ ์๋ฆฌ"๋ฅผ ๋ฐ๋์ ๋ง์กฑํ๋ ๋ฌธ์ ์๋ง ์ ์ฉ ๊ฐ๋ฅํ๋ค.
์ฃผ์ด์ง ๋ฌธ์ ์ ๋ํ ์ต์ ํด๋ ์ฃผ์ด์ง ๋ฌธ์ ์ ์๋ฌธ์ ์ ๋ํ ์ต์ ํด๋ก ๊ตฌ์ฑ๋๋ค.
๐ฉ ์ฒ๋ฆฌ ๊ณผ์
1. ์ต์ ์ฑ์ ์๋ฆฌ๊ฐ ์ฃผ์ด์ง ๋ฌธ์ ์ ์ฑ๋ฆฝํ๋ ์ง ํ์ธ
2. ์ฃผ์ด์ง ๋ฌธ์ ์ ๋ํด์ ์ต์ ํด๋ฅผ ์ ๊ณตํ๋ ์ ํ์ ๋์ถ
3. ๊ฐ์ฅ ์์ ์๋ฌธ์ ๋ถํฐ ์ ํ์์ ํด๋ฅผ ๊ตฌํ ๋ค ์ด๋ฅผ ํ ์ด๋ธ์ ์ ์ฅ
4. ํ ์ด๋ธ์ ์ ์ฅ๋ ์๋ฌธ์ ์ ํด๋ฅผ ์ด์ฉํ์ฌ ์ ์ฐจ์ ์ผ๋ก ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ํฐ ์์ ๋ฌธ์ ์ ํด๋ฅผ ๊ตฌํด ๋๊ฐ
๐ ํผ๋ณด๋์น ์์ด (๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ)
์์ ๋ ์ ๋ํ ๊ฐ์ด ์ดํ์ ๊ฐ
#include <stdio.h>
int fibonacci(int n) {
if (n == 0) {
return 0;
}
else if (n == 1) {
return 1;
}
else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main(void) {
int n;
for (n = 0; n < 8; ++n) {
printf("%d, ", fibonacci(n));
}
printf("\n");
return 0;
}
๋ฌธ์ ์ : ๊ฐ์ ์ธ์์ด๋ฉด ๋ฐํ๊ฐ๋ ๋์ผํ๋ฏ๋ก ์ฌ๋ฌ ๋ฒ ๊ฐ์ ์ธ์๋ก ํผ๋ณด๋์น ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ ๋ญ๋น
๐ ๋์ ๊ณํ๋ฒ์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅ
๐ ํผ๋ณด๋์น ์์ด (๋์ ๊ณํ๋ฒ)
#include <stdio.h>
#define LENGTH 100
int fibonacciNumbers[LENGTH];
int fibonacci(int n) {
for (int i = 0; i <= n; ++i) {
if (i == 0) {
fibonacciNumbers[i] = 0;
}
else if (i == 1) {
fibonacciNumbers[i] = 1;
}
else {
fibonacciNumbers[i] = fibonacciNumbers[i - 1] + fibonacciNumbers[i - 2];
}
}
return fibonacciNumbers[n];
}
int main(void) {
for (int n = 0; n <= 8; ++n) {
printf("%d, ", fibonacci(n));
}
printf("\n");
return 0;
}
์ฌ๊ทํธ์ถ๊ณผ ๋์ ๊ณํ๋ฒ์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋์ฑ ํจ์จ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์๋ค.
์ด๊ธฐํ ์ฒ๋ฆฌ ํจ์ ์ถ๊ฐ. ํผ๋ณด๋์น ์๋ฅผ ๊ธฐ์ตํ๋ ๋ฐฐ์ด์ ์์๊ฐ์ ๋ชจ๋ -1๋ก ์ด๊ธฐํํ๋ค. -1์ ํผ๋ณด๋์น ์๊ฐ ๊ตฌํด์ง์ง ์์์์ ๋ํ๋ธ๋ค. -1๋ก ํ ์ด์ ๋ ํผ๋ณด๋์น ์๋ 0 ์ด์์ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๋์ ๊ณํ๋ฒ์ผ๋ก ์ฌ๊ท ํธ์ถ์ ๋ญ๋น๋ฅผ ํผํ๋ค.
#include <stdio.h>
#define LENGTH 100
int fibonacciNumbers[LENGTH];
void initFibonacciNumbers() {
for (int i = 0; i < LENGTH; ++i) {
fibonacciNumbers[i] = -1;
}
}
int fibonacci(int n) {
printf("fibonacci(%d)๊ฐ ํธ์ถ๋์์ต๋๋ค.\n", n);
if (fibonacciNumbers[n] == -1) {
if (n == 0) {
fibonacciNumbers[n] = 0;
}
else if (n == 1) {
fibonacciNumbers[n] = 1;
}
else {
fibonacciNumbers[n] = fibonacci(n - 1) + fibonacci(n - 2);
}
}
return fibonacciNumbers[n];
}
int main(void) {
initFibonacciNumbers();
printf("5๋ฒ์งธ ํผ๋ณด๋์น ์ = %d\n", fibonacci(5));
printf("\n");
return 0;
}
๐ ํ์ฉ1 ๋ชจ๋ ์ ์ ์ ๊ฐ์ ์ต๋จ ๊ฒฝ๋ก
๐ ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ
๐ ํ์ฉ2 ํ๋ ฌ
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ํ ์ ๋ ฌ(Selection Sort) (0) | 2024.04.12 |
---|---|
์ฌ๊ท(์ํ) ์๊ณ ๋ฆฌ์ฆ (0) | 2024.03.27 |
๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ (0) | 2024.03.27 |
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (ํ์ ์๊ณ ๋ฆฌ์ฆ) (0) | 2024.03.27 |
์ ํ ๊ฒ์ (๋ณด์ด๋ฒ) (0) | 2024.01.06 |