λ¨Όμ , λ¬Έμ μ μ리λ₯Ό μ΄ν΄ν΄μΌνλ€.
λ€μ΄λλ―Ή νλ‘κ·Έλλ° λ¬Έμ λ‘, Dp[n] μ 2*n μ¬κ°νμ κ²½μ°μ μλ₯Ό λ©λͺ¨μ΄μ μ΄μ ν΄μΌνλ€.
2*1 μ¬κ°νμ κ²½μ° 1κ°μ§, 2*2 μ¬κ°νμ κ²½μ° 2κ°μ§κ° λμ¨λ€.
μ κ·Έλ¦Όμ λ°λΌ, 2*3 μ¬κ°νμ μκ°ν΄λ³΄λ©΄, μ μΌ μ€λ₯Έμͺ½μ 2*1 μ¬κ°νμ μΆκ°νκ³ λμ λ¨μ 2*2 μ¬κ°νμ μ΄λ»κ² μ±μΈμ§ κ³ λ―Όν΄λ³΄λ©΄ λλλ°, κ³ λ―Όν νμκ° μλ€. μ΄λ―Έ 2*2 μ¬κ°νμ μ±μ°λ κ²½μ°μ μλ₯Ό μκ³ μκΈ° λλ¬Έμ΄λ€.
λν, 1*2 μ¬κ°ν λκ°λ₯Ό = λͺ¨μμΌλ‘ λκ³ , λ¨μ 2*1 μ¬κ°νμ μ΄λ»κ² μ±μΈμ§ κ³ λ―Όν΄λ³΄λ©΄ λλλ°, μ΄ μμ, 2*1 μ¬κ°νμ μ±μ°λ κ²½μ°μ μλ₯Ό μκ³ μκΈ° λλ¬Έμ, λν΄μ£ΌκΈ°λ§ νλ©΄λλ€.
μ¦, νΌλ³΄λμΉ μμ΄μ ννλ₯Ό λκ³ μμμ νμ ν μ μλ€.
2*3 μ¬κ°νμ μ±μ°λ κ²½μ°μ μλ 2*2 μ¬κ°ν κ²½μ°μ μ + 2*1 μ¬κ°ν κ²½μ°μ μμμ μ μ μλ€.
λ§μ°¬κ°μ§λ‘, 2*4 μ¬κ°νμ κ²½μ°, 2*3 μ¬κ°ν κ²½μ°μ μ + 2*2 μ¬κ°ν κ²½μ°μ μ μμ μ μ μλ€.
μ리λ§, νμ νλ©΄ λ§€μ° μ¬μ΄ λ¬Έμ μλ€.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int [] Dp = new int[n+1];
Dp[0]=1; // 2*1 μ¬κ°ν κ²½μ°μ μ
Dp[1]=2; // 2*2 μ¬κ°ν κ²½μ°μ μ
for(int i=2;i<n;i++) {
Dp[i]=(Dp[i-1]+Dp[i-2])%10007; // λ¬Έμ μμ 10007λ‘ λλ λλ¨Έμ§ κ°μ μꡬ
}
System.out.println(Dp[n-1]); //2*n μ¬κ°ν κ²½μ°μ μ
}
}