[백준] 2748번: 피보나치 수 2 (Java)

seri·2024년 7월 10일
0

코딩테스트 챌린지

목록 보기
17/62
post-custom-banner

문제: https://www.acmicpc.net/problem/2748

📌 문제 탐색하기

입력 : n (1 ≤ n ≤ 90 )
출력 : n번째 피보나치 수

가능한 시간복잡도

O(N)

알고리즘 선택

DP

📌 코드 설계하기

  1. n을 입력으로 받고, n 크기를 가진 배열을 생성한다.
  2. 피보나치 수를 구해 배열에 넣는다.
  3. n번째 피보나치 수를 출력한다.

📌 시도 회차 수정 사항 (Optional)

💡 시도별 수정 사항은 어떻게 작성하나요?
- 무문별하게 “맞았습니다”가 나올때 까지 수정하는 형태의 문제 풀이를 반복하면 , 내가 어떤 실수를 해서 해당 문제를 틀렸는지 모르게 됩니다.
- 틀렸습니다를 받았다면 왜 틀렸는지 고민해보고 , 어떻게 수정할 수 있는지 고민하는 과정을 작성해주시면 됩니다.
- 위에 내가 세울 설계에서 어떤 부분이 틀렸는지도 함께 점검해보세요
- 한번에 맞출수도 있기 때문에 이 칸은 Optional입니다.

1회차

for 루프에서 i <= n으로 설정하여 n번째 값을 계산하도록 해야하고, 피보나치 수의 배열은 long 형이어야 한다.

2회차

📌 정답 코드

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.close();

        if (n == 0) {
            System.out.print(0);
            return;
        }

        if (n == 1) {
            System.out.print(1);
            return;
        }

        int[] fib = new int[n + 1];
        fib[0] = 0;
        fib[1] = 1;

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

        System.out.print(fib[n]);
    }
}
profile
꾸준히 정진하며 나아가기
post-custom-banner

0개의 댓글