문제
풀이
#include <string>
#include <vector>
using namespace std;
// 피보나치수열
// 1 > 2 > 3 > 5 > 8 > ...
int num = 1000000007;
int solution(int n) {
int bf = 1;
int af = 1;
int temp;
for(int i=1; i<n; i++){
temp = af;
af = (bf + af)%num;
bf = temp%num;
}
return af%num;
}
f(1) : 1
f(2) : 2
f(3) : 3
f(4) : 5
f(5) : 8 ...
문제의 결괏값이 피보나치수열을 이루는 것을 확인할 수 있다.
피보나치 수열을 구하는 알고리즘을 활용하여 풀어주었다.
다른 사람 풀이
#include <string>
#include <vector>
using namespace std;
int solution(int n)
{
int answer = 0;
std::vector<int> vVal;
vVal.clear();
vVal.resize(n + 1);
vVal[0] = 0;
vVal[1] = 1;
vVal[2] = 2;
int Idx = 3;
while ( Idx < n + 1 )
{
vVal[Idx] = ( vVal[Idx - 1] + vVal[Idx - 2] ) % 1000000007;
++Idx;
}
answer = vVal[Idx - 1] ;
return answer;
}
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스] 다음 큰 숫자 - bitset (0) | 2022.12.18 |
---|---|
[프로그래머스] 3 x n 타일링 - MOD 모듈러 연산 (0) | 2022.12.11 |
[프로그래머스] 가장 큰 정사각형 찾기 - DP (0) | 2022.12.11 |
[프로그래머스] 완전탐색 - 전력망을 둘로 나누기 (0) | 2022.11.12 |
[프로그래머스] 완전탐색 - 모음사전 / 중복순열 (0) | 2022.11.12 |