피보나치 수 : 문제 링크
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 이다. 예를들어 아래와 같이 이어진다.
- F(2) = F(0) + F(1) = 0 + 1 = 1
- F(3) = F(1) + F(2) = 1 + 1 = 2
- F(4) = F(2) + F(3) = 1 + 2 = 3
- F(5) = F(3) + F(4) = 2 + 3 = 5
2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성
제한 사항
- n은 2 이상 100,000 이하인 자연수 이다.
int형 벡터 fib를 n + 1 크기로 0으로 초기화하고, 인덱스 1과 2의 원소를 1로 초기화. for loop의 초기화식을 3으로 설정하고, 조건식을 n이하로 설정. fib[i]에 fib[i - 1] + fib[i - 2] % 1234567 연산을 한 값을 저장. loop 탈출 후, fib 벡터 중 인덱스 n에 저장된 값을 return
#include <vector>
using namespace std;
int fibonacci(int n) {
vector<int> fib(n + 1, 0);
fib[1] = 1;
fib[2] = 1;
for(int i = 3; i <= n; ++i) {
fib[i] = (fib[i - 1] + fib[i - 2]) % 1234567;
}
return fib[n];
}
int solution(int n) {
return fibonacci(n);
}