컴퓨터 공학/백준

[백준] JAVA 자바 : 2×n 타일링 2 (11726번)

kim-dev 2024. 1. 22. 20:59
반응형


직전 문제인 2×n 타일링에서 추가할 수 있는 블럭의 개수가 하나 늘어난 케이스이다.
이건 2×n 타일링 문제를 이해하고 푸셨다면… 진짜 2분 안에 해결하실 수 있을 것 같다.

기존의 dp[i] = dp[i-1] + dp[i-2]라는 코드는 dp[i]에 1×2로 채우는 경우 + 2×1로 채우는 경우를 뜻했다.
그러나 2×1로 채우는 경우의 수는 2×2로 채우는 경우의 수와 똑같으므로… dp[i-2]를 더해줄 때 2배를 해서 더해주면 된다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Tiling_2n_2 {

    public static int stoi(String str) {
        return Integer.parseInt(str);
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int X = stoi(br.readLine());

        long[] dp = new long[X+1];
        dp[0] = 1;
        dp[1] = 1;

        for (int i=2; i<=X; i++) {
            dp[i] = (dp[i - 1] + dp[i - 2]*2) % 10007; // 2배 곱하여 더해준다.
        }

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

 

 

로그인

 

www.acmicpc.net

 

 

작성일자: 2023-11-24