https://www.acmicpc.net/problem/2748
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 시간 : 64ms, 메모리 : 11,516KB
*/
public class Main {
static int N;
static long[] dp = new long[91];
static long ret;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
System.out.println(fibo(N));
br.close();
}
static long fibo(int index){
// 기저 사례
if(index <= 1) return dp[index] = index;
// 값이 저장되어 있지 않다면 점화식을 이용하여 값을 찾는다
if(dp[index] == 0) dp[index] = fibo(index-1) + fibo(index-2);
// 값이 저장되어 있다면 바로 값을 반환
return dp[index];
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 시간 : 64ms, 메모리 : 11,532KB
*/
public class Main {
static int N;
static long[] dp = new long[91];
static long ret;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
dp[0] = 0;
dp[1] = 1;
for(int i = 2; i <= N; ++i){
dp[i] = dp[i-1] + dp[i-2];
}
System.out.println(dp[N]);
br.close();
}
}