본문 바로가기
Java/백준문제풀이

[백준] 10870번: 피보나치 수 5 [JAVA]

by ehdghk154 2022. 2. 26.

출처: https://www.acmicpc.net/problem/10870

문제

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.

n=17일때 까지 피보나치 수를 써보면 다음과 같다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다.

출력

첫째 줄에 n번째 피보나치 수를 출력한다.


알고리즘

이번 문제는 n번째의 피보나치 수를 구하는 문제입니다.

피보나치 공식으로 코드를 작성하면 되고, 문제를 잘 읽어보시면 코드 작성 방법이 모두 나와 있습니다.

피보나치 수 F의 식을 문제대로 작성해보면

n이 2이상일 때, F[n] = F[n-1] + F[n-2] 와 같은 식으로 됩니다.

0번째는 0, 1번째는 1로 주어졌으므로 이에 맞게 코드를 작성해보겠습니다.


코드

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

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());
		int[] fibonacci = new int[21]; // 20까지
		
		fibonacci[0] = 0;
		fibonacci[1] = 1;
		if(T == 0 || T == 1)
            	    System.out.println(fibonacci[T]);
        	else {
		    for(int i = 2; i <= T; i++) {
		    	fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];
		    }
		    System.out.println(fibonacci[T]);
        	}
	}
}

어제 풀었던 피보나치 함수가 이 문제같은 것들을 풀고 풀었으면 좀 덜 헤맸을 수 있을 것 같습니다.

이 글의 알고리즘이나 코드에서 지적할만한 부분은 댓글에 남겨주시면 저에게 많은 힘이 됩니다!

 

댓글