백준 10826 피보나치 수 4 JAVA 풀이 (DP, BigInteger, 시간복잡도)

2026. 3. 30. 13:11·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

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


📌 문제 개요

피보나치 수열의 n번째 값을 구하는 문제
하지만 n의 범위가 매우 크기 때문에 일반적인 자료형으로는 해결할 수 없다.


📌 접근 방법

이 문제는 전형적인 DP(동적 계획법) 문제

  • 이전 두 값을 이용하여 다음 값을 계산
  • 재귀 대신 반복문 사용 (성능 고려)
  • 핵심은 자료형 선택

📌 핵심 아이디어

  • 피보나치 수는 n이 커질수록 값이 매우 빠르게 증가
  • long 범위를 초과하기 때문에 사용 불가
  • 따라서 BigInteger 사용 필수

BigInteger temp \= a.add(b);

 

BigInteger는 연산을 메서드로 수행해야 한다


📌 전체 코드

/*
문제-10826 (실버5): 피보나치 수 4
- n번째 피보나치 수를 출력하는 문제
- n의 범위가 매우 커서 일반 자료형으로는 처리 불가능

접근 방법
- 반복문을 이용한 Bottom-Up 방식 사용
- 이전 값 2개를 이용하여 현재 값 계산
- int/long 대신 BigInteger 사용

핵심 아이디어
- 피보나치 수는 n이 커질수록 값이 기하급수적으로 증가
- long 범위를 초과하기 때문에 BigInteger 사용 필수
- 덧셈은 add() 메서드 사용

처리 흐름
- 입력
- BigInteger a=0, b=1 초기화
- n==0이면 0 출력
- 반복문으로 피보나치 계산
- 결과 출력
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;

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 a = BigInteger.ZERO;
        BigInteger b = BigInteger.ONE;

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

        for(int i = 2; i <= n; i++){
            BigInteger temp = a.add(b);
            a = b;
            b = temp;
        }

        System.out.println(b);
    }
}

🧾 정리

  • 피보나치 자체는 쉬운 문제
  • 하지만 자료형이 핵심 포인트
  • 큰 수 문제 → BigInteger 바로 떠올리기
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

백준 4659 비밀번호 발음하기 JAVA 풀이 (구현, 문자열, O(L))  (0) 2026.04.01
백준 9625 BABBA JAVA 풀이 (DP, 피보나치, O(N))  (0) 2026.03.31
백준 24262 알고리즘 수업 - 알고리즘의 수행 시간 1 JAVA 풀이 (수학, 시간복잡도)  (0) 2026.03.29
백준 11931 수 정렬하기 4 JAVA 풀이 (정렬, 시간복잡도)  (0) 2026.03.28
백준 5635 생일 JAVA 풀이 (정렬, 시간복잡도)  (0) 2026.03.27
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 백준 4659 비밀번호 발음하기 JAVA 풀이 (구현, 문자열, O(L))
  • 백준 9625 BABBA JAVA 풀이 (DP, 피보나치, O(N))
  • 백준 24262 알고리즘 수업 - 알고리즘의 수행 시간 1 JAVA 풀이 (수학, 시간복잡도)
  • 백준 11931 수 정렬하기 4 JAVA 풀이 (정렬, 시간복잡도)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN N
      • 코테(Solved.ac + Programmers) N
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    solved.ac
    브루트포스
    정보처리기사
    정처기실기
    알고리즘
    프로그래머스
    level0
    level1
    백준
    dp
    springboot
    완전탐색
    기출문제
    수학
    실기
    문자열
    정보처리기사 실기 기출문제
    java
    코딩테스트
    자료구조
    구현
    정렬
    Level2
    백엔드개발자
    피보나치
    자바
    배열
    정처기
    정처기오답노트
    시뮬레이션
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
백준 10826 피보나치 수 4 JAVA 풀이 (DP, BigInteger, 시간복잡도)
상단으로

티스토리툴바