본문 바로가기
Preparing Coding Test/Baekjoon

[Java/백준/DP] 2748번: 피보나치 수 2

by weero 2020. 9. 25.

문제

www.acmicpc.net/problem/2748

 

2748번: 피보나치 수 2

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

www.acmicpc.net

 

코드

틀렸습니다가 자꾸 떠서 속상했는데 알고보니 결과값이 int형의 범위를 넘어가기 때문이었다.

안심^^

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

class Main{
	static long[] ans = new long[91];
	public static long fib(int n) {
		if(n==0)
			return 0;
		if(n==1)
			return 1;
		if(ans[n]!=0)
			return ans[n];
		return ans[n]=fib(n-1)+fib(n-2);
	}
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int n = Integer.parseInt(br.readLine());
		bw.write(Long.toString(fib(n)));
		
		bw.flush();
	}
}