공부 기록

C++ 백준 2748번

by 너나나

백준 2748번 www.acmicpc.net/problem/2748

 

2748번: 피보나치 수 2

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

www.acmicpc.net

문제는 그냥 어제 글 쓴 memoization 이용해서 구현하는 피보나치 수열이다.

처음에 틀렸는데 90번째 피보나치 수가 엄청 커서 함수 선언을 long long으로 해줘야 한다!! 선언을 int로 해서 틀렸다!!

#include<iostream>
using namespace std;

long long memo[90] = { 0, }; // 배열 0으로 다 초기화

long long fibo(int n) {
	if (n == 0) return 0;
	else if (n == 1) return 1;
	if (memo[n] > 0) return memo[n]; // memo[n]>0 이면 앞에 미리 계산한거임! 그거 사용
	else {
		memo[n] = fibo(n - 1) + fibo(n - 2); // memoization을 이용하여 시간 줄임
		return memo[n];
	}
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	int t;
	cin >> t;
	cout << fibo(t) << '\n';
}

 

하루에 쉬운 거라도 5문제씩 풀기 도전 중인데 너무 하기 싫다!!

이거 하기 싫으니까 한국사가 재밌어지기 시작했다.. 고등학생 땐 쳐다도 안 봤는데!! 으앙아아악

'study > 알고리즘' 카테고리의 다른 글

C++ 백준 11726번  (0) 2020.12.30
C++ 백준 1463번  (0) 2020.12.30
C++ 알고리즘 - 다이나믹 프로그래밍  (0) 2020.12.28
C++ 백준 1110번/1929번  (0) 2020.12.28
C++ 알고리즘 소수구하기 - 에라토스테네스의 체  (0) 2020.12.28

블로그의 정보

공부 기록

너나나

활동하기