본문 바로가기
알고리즘/동적프로그래밍

2 x n 타일링

by e-pd 2020. 9. 7.

 

programmers.co.kr/learn/courses/30/lessons/12900

 

코딩테스트 연습 - 2 x n 타일링

가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 ��

programmers.co.kr

 

다이나믹 프로그래밍을 이용한다. 효율성을 위해 캐싱을 이용한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
    private static int MOD_NUMBER = 1_000_000_007;
 
    private int getTiles(int n, int[] tiles) {
        if (n <= 2) {
            return n;
        } else {
            return tiles[(n - 1)] + tiles[(n - 2)];
        }
    }
 
    public int solution(int n) {
        int[] tiles = new int[n + 1];
 
        for (int i = 0; i <= n; i++) {
            tiles[i] = getTiles(i, tiles) % MOD_NUMBER;
        }
 
        return tiles[n];
    }
}
cs

 

'알고리즘 > 동적프로그래밍' 카테고리의 다른 글

피보나치 수열  (0) 2020.10.29
타겟넘버  (0) 2020.09.06