https://www.acmicpc.net/problem/2193
이 문제는 어떻게 진행되는지 직접 찾아보면 금방 알 수 있다.
규칙을 잘 살펴보면 이친수에서
마지막 수가 0이면 다음은 0과 1이 올 수 있고
마지막 수가 1이면 다음은 0밖에 못온다
이 성질을 이용해서 개수를 규칙적으로 파악하여 해결하면 된다.
그리고 N은 90까지 받을 수 있으니 자료형을 long으로 해결하는 것이 좋다.
import java.util.Scanner;
public class Num2193 {
public static int N;
public static long NumZero[];
public static long NumOne[];
public static void main(String[] args) {
//input
Scanner scanner = new Scanner(System.in);
N = Integer.parseInt(scanner.nextLine());
NumZero = new long[N+1];
NumOne = new long[N+1];
//logic
NumZero[1] = 0;
NumOne[1] = 1;
for (int i=2; i<=N; i++) {
NumOne[i] = NumZero[i-1];
NumZero[i] = NumOne[i-1] +NumZero[i-1];
}
//output
System.out.println(NumOne[N] + NumZero[N]);
}
}