suheang

[백준] | JAVA, 자바 | 2747번 - 피보나치 수 본문

알고리즘

[백준] | JAVA, 자바 | 2747번 - 피보나치 수

suheang 2024. 8. 10. 21:29

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


문제 요약 :

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다.

그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.

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

 

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


문제 풀이 :

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 n = Integer.parseInt(br.readLine());
        int[] num = new int[n + 1];
        num[0] = 0;
        num[1] = 1;

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

        System.out.println(num[n]);
    }
}

 

1. n 입력받기
2. n + 1 크기를 가진 배열 생성
3. 피보나치 수는 0과 1로 시작하기 때문에 배열 index 0과 1일 때 값 저장
4. n이 2 이상일 때 for 문 실행
5. num[i - 1] + num[i - 2]를 계산하여 num[i]에 값을 저장
6. 저장된 num[n]의 값을 출력