본문 바로가기
알고리즘/DP

[java 백준] 실버 3/ 11727번 2xn타일링 2

by Meaning_ 2021. 7. 30.
728x90
반응형

https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

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

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
26
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
 
    public static int n;
    public static int[] dp;
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        n = Integer.parseInt(br.readLine());
        dp = new int[1001];
 
        dp[1= 1;
        dp[2= 3;
        for (int i = 3; i <= n; i++) {
            dp[i] = (2 * (dp[i - 2]) + dp[i - 1]) % 10007;
        }
 
        System.out.println(dp[n]);
 
    }
 
}
cs

 

 


계속 ArrayIndexOutOfBounds 런타임에러가 떠서 처음부터 배열크기를 1001로 맞춰놓고 시작했다.

bottom - up 방식으로 풀어봤고, 11726번 문제랑 달리 2x2타일이 있기 때문에 이걸 염두에 두고

 

f[n]=2*(f[n-2])+f[n-1] (단 n>=3) 점화식을 짜면된다. 

 

문제를 풀면서  틀렸던 부분 


문제를 풀면서 2번의 틀렸습니다를 보았는데, 그 이유는 f[1]=2로 생각해서였다. 

위의 그림처럼  2x1과 1x2는 같은건데 다른거라 생각하고 풀어서 틀렸다. 

 

728x90
반응형

댓글