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