본문 바로가기
백준

[백준] 10826번 : 피보나치 수 4 – JAVA [자바]

by Hongwoo 2022. 3. 27.
반응형

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

 

10826번: 피보나치 수 4

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

www.acmicpc.net

 


  • 문제

 


  • 문제 풀이

백준 10826번 피보나치 수 4는 DP와 BigInteger를 이용해서 푸는 문제이다. DP나 BigInteger 이론을 공부하고 싶으면 밑에 있는 링크들을 참고하면 되겠다.

 

https://propercoding.tistory.com/entry/알고리즘-다이나믹-프로그래밍-Dynamic-Programming

 

[알고리즘] 다이나믹 프로그래밍 (Dynamic Programming)

목차 다이나믹 프로그래밍이란? 다이나믹 프로그래밍 (Dynamic Programming) 또는 동적 계획법은 큰 문제를 작은 문제로 쪼개서 푸는 기법이다. 다이나믹 프로그래밍의 특징은 모든 작은 문제들은 단

propercoding.tistory.com

https://propercoding.tistory.com/entry/알고리즘-큰-숫자-정수-BigInteger-사용법-JAVA-자바

 

[알고리즘] 큰 숫자 (정수) BigInteger 사용법 - JAVA [자바]

목차 BigInteger를 사용해야 하는 이유 가끔 알고리즘 문제들을 풀다 보면 큰 수를 처리해야 될 때가 있다. 여기서 큰 수란 int형의 범위를 넘어가고 심지어 long 형의 범위를 넘어갈 때이다. int형의

propercoding.tistory.com

피보나치 수열은 fib(n) = fib(n-2) + fib(n-1)과 같다. 이것을 BigInteger를 사용해서 표현하면 다음과 같다.

dp [n] = dp[n-2].add(dp[n-1])

여기서 배열 dp는 BigInteger를 담고 있다.

 

 


  • 코드
import java.math.BigInteger;
import java.util.*;
import java.io.*;
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());
        BigInteger[] dp = new BigInteger[10001];
        dp[0] = new BigInteger("0");
        dp[1] = new BigInteger("1");
        for (int i = 2; i <= n; i++) {
            dp[i] = dp[i-2].add(dp[i-1]);
        }
        System.out.print(dp[n]);
    }
}

 


  • 후기

BigInteger를 모르는 상태였으면 문제를 이해해도 절대 풀 수 없는 문제이다. BigInteger를 이용해서 푸는 문제가 간간히 나오므로 BigInteger를 이해하는 게 되게 중요하다.

 

반응형

댓글