엄지월드

백준 10826 피보나치 수 4 본문

알고리즘

백준 10826 피보나치 수 4

킨글 2024. 5. 1. 18:07

문제

설명

간단한 피보나치 수열 문제라고 생각해서 DP로 풀어서 냈다. 

하지만 바로 틀렸다고 뜨길레 범위를 보니깐 10,000까지의 범위였다.

10,000까지의 범위는 long도 커버할 수 없기 때문에 BigDecimal을 활용해서 처리하였더니 성공했다.

 

코드

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

public class Main {
    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());
        if (n == 0) {
            bw.write("0");
            bw.flush();
            bw.close();
            return;
        } else if (n == 1) {
            bw.write("1");
            bw.flush();
            bw.close();
            return;
        } else if (n == 2) {
            bw.write("1");
            bw.flush();
            bw.close();
            return;
        }

        BigDecimal[] arr = new BigDecimal[n+1];

        arr[0] = new BigDecimal(0);
        arr[1] = new BigDecimal(1);

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

        bw.write(String.valueOf(arr[n]));

        bw.flush();
        bw.close();
    }
}

 

 

<광고를 클릭해주시면 저에게 큰 힘이 됩니다 😃>

'알고리즘' 카테고리의 다른 글

백준 5800 성적 통계  (0) 2024.05.08
백준 16435 스네이크버드  (0) 2024.05.06
백준 1652 누울 자리를 찾아라  (0) 2024.04.29
백준 5635 생일  (0) 2024.04.24
백준 11931 수 정렬하기 4  (0) 2024.04.23
Comments