본문 바로가기
알고리즘/백준

[백준 11727] 2xn 타일링 2 - 자바

by binghe819 2020. 5. 1.

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

 

11727번: 2×n 타일링 2

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

www.acmicpc.net


1. 풀이

[백준 11726 2xn 타일링] 와 거의 똑같은 문제이다.

 

하지만 조건에서 2x2의 타일도 가능하다했으므로 

 

점화식을 세워보면 D[n] = D[n-1] + D[n-2] + D[n-2]가 나오는 것을 볼 수 있다.

 


2. 코드

import java.util.*;

public class Main {

    static int[] memo = new int[1001];

    static int tile2(int n){
        if(memo[n] > 0)
            return memo[n];
        memo[n] = (tile2(n-1) + 2*tile2(n-2))%10007;
        return memo[n];
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        memo[1] = 1;
        memo[2] = 3;
        int n = sc.nextInt();
        System.out.println(tile2(n));

        sc.close();
    }
}

댓글