์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋ฐฑ์ค
- ํ๋ก๊ทธ๋๋จธ์ค
- ๊ทธ๋ํ
- SQL
- ์๊ณ ๋ฆฌ์ฆ
- ๊ทธ๋ฆฌ๋
- ๋์ ๊ณํ๋ฒ
- BFS
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ์๋ฃ๊ตฌ์กฐ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์์๊ตฌํ๊ธฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ค๋ธ์
- LIS
- ๋๋น์ฐ์ ํ์
- ์์ํ์
- ์ฐ์ ์์ํ
- ๋ณํฉ์ ๋ ฌ
- DFS
- ๊น์ด์ฐ์ ํ์
- ๋จธ์ง์ํธ
- db
- ํ์ด์ฌ
- ์ ๋ ฌ
- ๊ทธ๋ํํ์
- ๋์ ํฉ
- DP
- ๊ตฌํ
- ์ํ
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 1003๋ฒ: ํผ๋ณด๋์น ํจ์ - C++ ๋ณธ๋ฌธ
๋ฌธ์
๋ค์ ์์ค๋ N๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ๋ C++ ํจ์์ด๋ค.
int fibonacci(int n) {
if (n == 0) {
printf("0");
return 0;
} else if (n == 1) {
printf("1");
return 1;
} else {
return fibonacci(nโ1) + fibonacci(nโ2);
}
}
fibonacci(3)์ ํธ์ถํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ผ์ด ์ผ์ด๋๋ค.
- fibonacci(3)์ fibonacci(2)์ fibonacci(1) (์ฒซ ๋ฒ์งธ ํธ์ถ)์ ํธ์ถํ๋ค.
- fibonacci(2)๋ fibonacci(1) (๋ ๋ฒ์งธ ํธ์ถ)๊ณผ fibonacci(0)์ ํธ์ถํ๋ค.
- ๋ ๋ฒ์งธ ํธ์ถํ fibonacci(1)์ 1์ ์ถ๋ ฅํ๊ณ 1์ ๋ฆฌํดํ๋ค.
- fibonacci(0)์ 0์ ์ถ๋ ฅํ๊ณ , 0์ ๋ฆฌํดํ๋ค.
- fibonacci(2)๋ fibonacci(1)๊ณผ fibonacci(0)์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ , 1์ ๋ฆฌํดํ๋ค.
- ์ฒซ ๋ฒ์งธ ํธ์ถํ fibonacci(1)์ 1์ ์ถ๋ ฅํ๊ณ , 1์ ๋ฆฌํดํ๋ค.
- fibonacci(3)์ fibonacci(2)์ fibonacci(1)์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ , 2๋ฅผ ๋ฆฌํดํ๋ค.
1์ 2๋ฒ ์ถ๋ ฅ๋๊ณ , 0์ 1๋ฒ ์ถ๋ ฅ๋๋ค. N์ด ์ฃผ์ด์ก์ ๋, fibonacci(N)์ ํธ์ถํ์ ๋, 0๊ณผ 1์ด ๊ฐ๊ฐ ๋ช ๋ฒ ์ถ๋ ฅ๋๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , N์ด ์ฃผ์ด์ง๋ค. N์ 40๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค 0์ด ์ถ๋ ฅ๋๋ ํ์์ 1์ด ์ถ๋ ฅ๋๋ ํ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํ๋ค.
๋์ ๊ณํ๋ฒ์ ์ฌ์ฉํ ๋ฌธ์ .
์๊ฐ ์ ํ์ด 0.25์ด์ด๊ธฐ ๋๋ฌธ์ ํผ๋ณด๋์น ์์ด์ ๊ฐ์ฅ ๋ํ์ ์ธ ํ์ด ๋ฐฉ๋ฒ์ธ ์ฌ๊ทํจ์๋ก ํธ์ถํด์ ํ๋ฉด ์๋๊ณ , bottom-up ๋ฐฉ์์ผ๋ก ํ๋ฉด ๊ฐ๋จํ๊ฒ ํ ์ ์๋ค.
์๊ฐ์ด ์งง๊ธฐ ๋๋ฌธ์ ๋งค๋ฒ ๊ฐ์ ๊ตฌํ๋ ค ํ๋ฉด ์ค๋๊ฑธ๋ฆฐ๋ค๊ณ ํด์ ํผ๋ณด๋์น ์์ด์ ๋ณํ์ง ์๋ ๊ฐ์ด๋ฏ๋ก ๋ฏธ๋ฆฌ ๋ชจ๋ ๊ฐ์ ๋ํด ๊ธฐ๋กํด๋๊ณ ๊ฐ์ ์ถ๋ ฅํด์ผ๋๋ค๊ณ ํ๋๋ฐ, ๊ทธ๋ ๊ฒ ์ํ์ด๋ C++๋ ์๊ฐ์ด๊ณผ๊ฐ ๋์ง ์๋๋ผ
์ฝ๋
#include <cstdio>
#define MAX 41
void DP(int num);
int main(void) {
int T;
scanf("%d", &T);
for(int i = 0; i < T; i++) {
int num;
scanf("%d", &num);
DP(num);
}
return 0;
}
void DP(int num) {
int count[MAX][2];
count[0][0] = 1, count[0][1] = 0;
count[1][0] = 0, count[1][1] = 1;
for(int i = 2; i <= num; i++) {
count[i][0] = count[i - 1][0] + count[i - 2][0];
count[i][1] = count[i - 1][1] + count[i - 2][1];
}
printf("%d %d\n", count[num][0], count[num][1]);
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 15486๋ฒ: ํด์ฌ 2 - C++ (0) | 2022.07.07 |
---|---|
[๋ฐฑ์ค] 12852๋ฒ: 1๋ก ๋ง๋ค๊ธฐ 2 - C++ (0) | 2022.07.06 |
[๋ฐฑ์ค] 1149๋ฒ: RGB๊ฑฐ๋ฆฌ - C++ (0) | 2022.07.04 |
[๋ฐฑ์ค] 1024๋ฒ: ์์ด์ ํฉ - C++ (0) | 2022.02.23 |
[๋ฐฑ์ค] 1788๋ฒ: ํผ๋ณด๋์น ์์ ํ์ฅ - C++ (0) | 2022.02.21 |