본문 바로가기
Programming/C++ - 백준

[백준] 2748번 : 피보나치 수 2 | int & long long 범위 (C++)

by 지구코드 2023. 5. 24.
반응형


문제


풀이

아래에 첨부한 2747번 문제와 같은 방식으로 풀이했다. 

 

두 문제의 차이점은 n의 범위이다.

2747번 문제는 n의 최댓값이 45이지만, 이 문제는 90이기 때문에 DP를 int 형으로 선언하면 오류가 발생한다.

n = 90일 때, 피보나치 수는 288,0067,1943,7081,6120이기 때문에, DP를 long long 형으로 선언했다.

 

int 형의 범위는 -2,147,483,648 ~ 2,147,483,647이며,

long long의 범위는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807이다.

 

 

[백준] 2747번 : 피보나치 수 - (C++)

문제 풀이 다이내믹 프로그래밍(DP)를 이용해 문제를 해결했다. n이 조건의 최댓값인 45인 경우, 피보나치 수는 11,3490,3170이다. int 형의 범위는 -2,147,483,648 ~ 2,147,483,647이므로, 피보나치 수의 최댓

jigoo-log.tistory.com


코드

#include <iostream>
using namespace std;

int main() {
	int n;
	long long DP[90];

	cin >> n;

	DP[0] = 0;
	DP[1] = 1;

	for (int i = 2; i <= n; i++) {
		DP[i] = DP[i - 1] + DP[i - 2];
	}

	cout << DP[n] << endl;
}

결과

 

 

2748번: 피보나치 수 2

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

www.acmicpc.net

 

반응형

댓글