728x90
피보나치 수열을 이용해서 풀었습니다.
1 - 1
2 - 2
3 - 3
4 - 5
5 - 8
6 - 13
.....
n번째를 구할때 n-1과 n-2를 더해서 구할 수 있습니다.
차례대로 밑에서부터 값을 구하면서 memo에 값을 저장해두고
그 값을 통해 다음 숫자를 풀어나가는 방식입니다.
다이나믹 프로그래밍방식 입니다.
#include
using namespace std;
int memo[1001];
int x;
void func(int num)
{
if (num <= x) {
memo[num] = memo[num - 2] + memo[num - 1];
memo[num] %= 10007;
func(++num);
}
return;
}
int main(int argc, char *argv[])
{
memo[0] = 1;
memo[1] = 1;
memo[2] = 2;
cin >> x;
func(3);
memo[x] %= 10007;
cout << memo[x];
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 2445번 별 찍기 - 8 (0) | 2019.04.06 |
---|---|
[C++] 백준 1463번 1로 만들기 (0) | 2019.04.05 |
[C++] 백준 2444번 별 찍기 - 7 (0) | 2019.04.04 |
[C++] 백준 2441번 별 찍기 - 6 (0) | 2019.04.03 |
[C++] 백준 2441번 별 찍기 - 5 (0) | 2019.04.03 |