이전 수와 현재 수를 더해서 다음 수를 만들어 내는 수열을 피보나치 수열이라고 한다
피보나치 수열은 다이나믹 프로그래밍 = 동적 계획법 의 분류에 해당되는데
스스로 재귀하며 답을 도출해내는 과정에서 이전의 계산한 결과는 배열에 넣어서
매번 따로 계산 없이 배열에서 이전 결과값을 그대로 가져와 사용하여 효과적으로 계산할 수 있다
벡터를 이용해서 풀었지만 수가 워낙 크다보니 배열이 많이 필요하지 않아서
앞으로는 간단히 정적 배열로 풀어도 될 것같다
https://www.acmicpc.net/problem/2748
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
vector<long long> v;
cin >> n;
v.emplace_back(0);
v.emplace_back(1);
if (n >= 2)
{
for (int i = 2; i <= n; i++)
{
v.emplace_back(v[i-1]+v[i-2]);
}
}
cout << v[n] <<"\n";
return 0;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 2579/c++] 계단 오르기 (0) | 2022.07.19 |
---|---|
[백준 24416/c++]피보나치 수 1 (0) | 2022.07.18 |
[백준 1676/c++] 팩토리얼 0의 개수 (0) | 2022.07.16 |
[백준 10815/c++] 숫자 카드 (0) | 2022.07.15 |
[백준 11866/c++] 요세푸스 문제 0 (0) | 2022.07.14 |
댓글