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
'Algorithm > 구름TEST' 카테고리의 다른 글
3개의 숫자를 더하여 술래가 원하는 숫자를 만드세요 - level 2 (0) | 2019.05.11 |
---|
댓글