© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 10826 - 피보나치 수 4

2022-11-22
BOJ
실버 V
java
원본 문제 보기
다이나믹 프로그래밍
임의 정밀도 / 큰 수 연산

문제

BOJ 10826 - 피보나치 수 4

자연수 N이 주어졌을 때, N번째 피보나치 수를 구하라. 결과가 매우 클 수 있으므로 큰 수 연산이 필요하다.

입력

첫째 줄에 N이 주어진다 (0 이상 10,000 이하).

출력

N번째 피보나치 수를 출력한다.

예제

입력출력
1055

풀이

BigInteger 배열로 큰 수 피보나치를 바텀업 DP로 계산한다.

  1. 크기 10,001의 BigInteger 배열을 생성하고 fib[0] = 0, fib[1] = 1로 초기화한다
  2. i = 2부터 10,000까지 fib[i] = fib[i-1] + fib[i-2]를 계산한다
  3. 입력 N을 읽어 fib[N]을 출력한다

핵심 아이디어: F(10000)은 수천 자리 수이므로 long 범위를 초과한다. BigInteger를 사용해 임의 정밀도 연산으로 해결한다.

코드

package ASP_study.day299;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
 
public class Day287BOJ10826피보나치4 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
		BigInteger[] fivonacci = new BigInteger[10001];
 
		fivonacci[0] = BigInteger.ZERO;
		fivonacci[1] = BigInteger.ONE;
 
		for (int i = 2; i < fivonacci.length; i++) {
			fivonacci[i] = fivonacci[i - 1].add(fivonacci[i - 2]);
		}
		int num = Integer.parseInt(br.readLine());
 
		System.out.println(fivonacci[num]);
	}
}

복잡도

  • 시간: O(N²)
  • 공간: O(N)