boj)2133 - 타일 채우기

2020. 9. 21. 17:53PS/boj

import java.io.*;

public class boj_2133 {
    static long[] d;
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {
        int n = Integer.parseInt(br.readLine());
        d = new long[n+1];
        d[0] = 1;

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

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

 

- 마지막 부분에 초점을 맞춤, 일단 n이 홀수일때는 채울 수 있는 방법이 없음

- 마지막 3x2를 채우는 방법의 수는 3가지 d[i] = d[i-2] * 3라고 생각해서 풀었으나 다른 방법이 또 있음

- 가로가 4, 6, 8, .. 일때 2가지 방법씩 더 존재하고 이것을 또 처리 해줘야함

- j = i-4 ~ 2씩 감소하며 d[i] += d[j] * 2; 로 추가 카운팅해줌

 

'PS > boj' 카테고리의 다른 글

boj)3085 - 사탕 게임  (0) 2020.09.21
boj)2309 - 일곱 난쟁이  (0) 2020.09.21
boj)13398 - 연속합 2  (0) 2020.09.21
boj)11054 - 가장 긴 바이토닉 부분 수열  (0) 2020.09.20
boj)11722 - 가장 긴 감소하는 부분 수열  (0) 2020.09.20