본문 바로가기

algorithm/Dynamic Programming

[C++] BOJ 10870 피보나치 수 5

문제

백준 10870번

www.acmicpc.net/problem/10870

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

코드

#include<iostream>
using namespace std;
int pibo[21];
int n;

int main() {
	pibo[0] = 0;
	pibo[1] = 1;
	cin >> n;
	if (n == 0) cout << pibo[0];
	else if (n == 1) cout << pibo[1];
	else {
		for (int i = 2; i <= n; i++) {
			pibo[i] = pibo[i - 1] + pibo[i - 2];
		}
		cout << pibo[n];
	}
}

풀이방법

동적계획법을 이용해 피보나치 수를 배열 pibo에 저장해준다.

고민과정

재귀함수랑 DP 둘다 가능하겠다.

'algorithm > Dynamic Programming' 카테고리의 다른 글

[C++] BOJ 1010 다리 놓기  (0) 2021.05.01
[C++] BOJ 13301 타일 장식물  (0) 2021.05.01
[C++] BOJ 9625 RIJEČI (BABBA)  (0) 2021.05.01
[C++] BOJ 2748  (0) 2021.03.27
[C++] BOJ 2839 ŠEĆER 설탕배달  (0) 2021.03.27