백준 2748 피보나치 수 2 JAVA 풀이 (DP, 반복문, 시간복잡도)

2026. 4. 16. 09:26·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

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


📌 문제 개요

피보나치 수열에서 N번째 값을 구하는 문제이다.
피보나치 수열은 다음과 같은 규칙을 가진다.

  • F(0) = 0
  • F(1) = 1
  • F(n) = F(n-1) + F(n-2)

N의 범위가 최대 90이므로 일반적인 재귀 방식은 비효율적


📌 접근 방법

피보나치 수는 이전 두 값을 이용해 계산할 수 있으므로
배열 대신 두 개의 변수만 사용해서 해결할 수 있다.

 

또한 반복문을 사용하면 시간복잡도를 O(N)으로 줄일 수 있다.


📌 핵심 아이디어

  • 피보나치는 이전 값 2개만 알면 계산 가능
  • 매 반복마다 값 이동이 중요하다
  • temp = one + two
    one = two
    two = temp
     
  • N ≤ 90 이므로 long 타입 사용 가능

📌 전체 코드

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

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());

        long one = 0;
        long two = 1;

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

        for(int i = 1; i < N; i++){
            long t = one + two;
            one = two;
            two = t;
        }

        System.out.println(two);
    }
}

📄 정리

  • 피보나치는 DP의 가장 기본적인 문제
  • 배열 없이 변수 2개로 최적화 가능
  • 자료형 범위(long)만 신경 쓰면 쉽게 해결 가능
 
728x90

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

백준 13548 수열과 쿼리 6 JAVA 풀이 (Mo's Algorithm, 오프라인 쿼리)  (0) 2026.04.20
백준 1531 투명 JAVA 풀이 (브루트포스, 시뮬레이션)  (0) 2026.04.19
백준 9237 이장님 초대 JAVA 풀이 (그리디, 정렬, 시간복잡도)  (0) 2026.04.15
백준 16395 파스칼의 삼각형 JAVA 풀이 (DP, 조합)  (0) 2026.04.14
백준 2628 종이자르기 JAVA 풀이 (구현, 정렬, 시간복잡도)  (0) 2026.04.13
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 백준 13548 수열과 쿼리 6 JAVA 풀이 (Mo's Algorithm, 오프라인 쿼리)
  • 백준 1531 투명 JAVA 풀이 (브루트포스, 시뮬레이션)
  • 백준 9237 이장님 초대 JAVA 풀이 (그리디, 정렬, 시간복잡도)
  • 백준 16395 파스칼의 삼각형 JAVA 풀이 (DP, 조합)
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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바