피보나치 수
![](https://velog.velcdn.com/images%2Fneity16%2Fpost%2F6dfa6d4e-2fe2-4b15-8457-da5cb3d8aa1c%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-03%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%203.06.10.png)
- 피보나치 수열을 만들기 위해 재귀보다 DP방식이 빠르다는 것을 알아야 한다
모듈러 연산 성질
을 통해 합을 줄이는 방법을 알고 있어야 한다.
(a + b) % c = ((a % c) + (b % c)) % c
코드
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
int before = 0;
int after = 1;
if(n == 1) return 1;
for(int i=2;i<=n;i++)
{
int sum = ((before%1234567) + (after%1234567))%1234567;
before = after;
after = sum;
}
answer = after;
return answer;
}
- 피보나치의 경우에 재귀는 비효율적이기 때문에 DP방식으로 점화식을 구해서 속도 향상!
- 또한 어떤 수로 나누라는 문제는 모듈러 연산 성질을 이용하라는 문제가 많음을 기억 !!