본문 바로가기
JAVA/백준

[백준/자바] 2747번 피보나치수

by 동백05 2022. 2. 5.

https://www.acmicpc.net/problem/2747

 

2747번: 피보나치 수

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

www.acmicpc.net

import java.util.Scanner;
public class feb05 {
	//BOJ 2747 피보나치수
	public static int arr[];
	
	//피보나치 함수를 재귀함수로 구현한다.
	public static int fibo(int num) {
		// 종료조건(1 혹은 2일 때 1 반환)
		if(num==1||num==2) {
			return 1;
		}
		// 한 번 계산한 적 있으면 그 값 반환
		else if(arr[num]!=0) {
			return arr[num];
		}
		// 계산한 적 없으면 점화식에 따라 계산
		else {
			arr[num]=fibo(num-1)+fibo(num-2);
			return arr[num];
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s=new Scanner(System.in);
		int number=s.nextInt();
		arr=new int[number+1];
		System.out.print(fibo(number));

	}
	

}

다이나믹 프로그래밍을 공부하며 풀어보았다.

댓글