[DP] [백준 / 11727] 실버 3 - 2×n 타일링 2 (java/자바)


n=3일때 첫번째로 올수 있는 경우의 블럭은 1칸 차지하는 블럭과 2칸 차지하는 블럭이다.
1칸 차지하는 블럭 이후 다음 2칸이 올 수 있는 경우는 n=2와 같다.
2칸 차지하는 블럭 이후 2칸의 경우의 수 X 다음 1칸이 올 수 있는 경우는 n=1과 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(r.readLine());
if(N==1) {
System.out.println(1);
return;
}
int[] dp = new int[N+1];
dp[1] = 1;
dp[2] = 3;
for (int i = 3; i < N+1; i++) {
dp[i] = (dp[i-1] + 2*dp[i-2])%10007;
}
System.out.println(dp[N]);
}
}