IT's 우

[java, 동적 계획법 dynamic programming]백준 11726번- 2 x n 타일링 본문

알고리즘/백준

[java, 동적 계획법 dynamic programming]백준 11726번- 2 x n 타일링

디우 2022. 8. 23. 11:59
728x90

출처: https://www.acmicpc.net/problem/11726

 

11726번: 2×n 타일링

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

www.acmicpc.net

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        int n = sc.nextInt();
 
        long[] D = new long[n + 1];
        D[0= 1;
        D[1= 1;
 
        if (n >= 2) {
 
            for (int i = 2; i <= n; i++) {
 
                D[i] = (D[i - 2+ D[i - 1]) % 10007;
 
            }
        }
 
        System.out.println(D[n]);
 
    }
}
cs

 


풀이

D[i] 

 =끝이 1칸(1x2)으로 끝날 때 + 끝이 2칸(2x1)으로 끝날 때

 

끝이 1칸(1x2)으로 끝날 때= D[i-1]

 

끝이 2칸(2x1)으로 끝날 때= D[i-2]

 

점화식:

D[i] = (D[i - 2] + D[i - 1]) % 10007;

 

728x90
반응형