알고리즘 기초1 Java
다이나믹 프로그래밍_11726 번 : 2xn 타일 JAVA
람대리
2024. 3. 29. 18:16
728x90
다이내믹 프로그래밍 Bottom-up 방식으로 풀어낼 수 있다.
문제를 푸는 순서는 다음과 같이 진행된다.
1. 테이블 정의
2. 점화식 찾기
3. 초기값 찾기
테이블 정의
D[i] 2 X i 전체 타일을 2x1 타일 이나 2x2 타일로 채우는 방법의 수
점화식 찾기
D[i] = D[i-2] + D[i-1];
D[i]는 D[i-2] 방법의 수에서 추가로 2x2 타일을 채우면 되고, D[i-1]에서 2x1 타일을 채우면 된다. 둘이 합친 방법의 수가 D[i] 값이다.
초기값 찾기
D[1] = 1
D[2] = 2
import java.io.*;
public class Main{
public static void main(String[] args){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println(tillingMethod(N));
}
public static int tillingMethod(int N){
int[] dp = new int[1001];
dp[1] = 1;
dp[2] = 2;
if(N<2)
return dp[N];
for(int i=3;i<=N;i++){
dp[i] = (dp[i-2] + dp[i-1]) % 10007;
}
return dp[N];
}
}