본문 바로가기
Algorithm/구름TEST

타일채우기 - level 4

by y.j 2019. 5. 12.
728x90

해결방법

dp를 이용하여 풀었다.
$$ dp[N] = dp[N-1] + 2*dp[N-2] $$
N번째 경우의 수는 dp[N-1]번째에서 1 X 2 직사각형을 채울 경우와 dp[N-2]에서 2 X 1 직사각형과 2 X 2 직사각형을 채울 경우의 수를 합친것이다.

소스코드

#include <iostream>
using namespace std;
int dp[1001];
int N, M;
int main() {
    cin >> N >> M;
    dp[1] = 1;
    dp[2] = 3;
    for(int i = 3; i <= N; ++i)
        dp[i] = (dp[i-1] + 2*dp[i-2]) % M;
    cout << dp[N] << '\n';
    return 0;
}
728x90

댓글