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

 

2748번: 피보나치 수 2

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

www.acmicpc.net

코드설명

DP를 활용하는 문제입니다.

 

이 문제같은경우,

1. TOP-DOWN 방식의 재귀함수사용

2. BOTTOM-UP 방식의 배열함수 사용

 

위의 2가지 방법이 있는데, BOTTOM-UP 방식의 배열함수를 사용하여 진행해보았습니다.

 

코드

BOTTOM-UP 방식의 배열함수 사용

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

public class Main {
	public static int T, N;
	public static int answer = 0;
	public static long[] dp;
    public static void main(String[] args) throws IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringTokenizer st = new StringTokenizer(br.readLine());
    	
//    	T = Integer.parseInt(st.nextToken());
    	dp = new long[91];
    	dp[0] = 0;
    	dp[1] = 1;
    	for(int i=2;i<91;i++) {
    		dp[i] = dp[i-1] + dp[i-2];
    	}
    	System.out.println(dp[Integer.parseInt(st.nextToken())]);
    	
    }
    
}

+ Recent posts