취미처럼

[백준] 2133번 타일 채우기 본문

Algorithm/백준

[백준] 2133번 타일 채우기

sirius 2021. 3. 9. 10:05
https://www.acmicpc.net/problem/2133
 

2133번: 타일 채우기

3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자.

www.acmicpc.net

  • dp[2] = 3
  • dp[4] = dp[2] * dp[2] + 2
  • dp[6] = dp[4] * dp[2] + dp[2] * 2 + 2
  • dp[8] = dp[6] * dp[2] + dp[4]  * 2 + dp[2] * 2 + 2

+2마다 예외 모양이 존재

중복되는 부분 제거

 

import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) throws Exception {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int dp[] = new int[n+ 1];
        dp[0] = 1;

        for(int i = 2; i <= n; i=i+2) {
            dp[i] = dp[i-2] * 3;
            for(int j=0; j <i-2; j=j+2) {
           	 dp[i] = dp[i] + ( dp[j] * 2 );
            }
        }

        System.out.println(dp[n]);
    }

}

 

Comments