오늘의 알고리즘
[C++] 백준 11727 2xn 타일링 2
하늘하늘 .
2022. 9. 23. 20:06
#include <iostream>
#include <vector>
int DP[1001] = {};
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
int N = 0;
std::cin >> N;
DP[1] = 1;
DP[2] = 3;
for (int i = 3; i <= N; ++i)
{
DP[i] = (DP[i - 1] + DP[i - 2] * 2) % 10007;
}
std::cout << DP[N];
return 0;
}
아예 그려봤습니다.
4번까지 그리니까 답이 보이더라구요. 한번 그려보세요.
1번은 |
2번은 ||, =, ㅁ 입니다.
3번은 |||, |=, |ㅁ, =|, ㅁ| 입니다.
4번은 ||||, ||=, ||ㅁ, |ㅁ|, |=|, ㅁ||, =||, ==, ㅁㅁ
보이시나요? -2에서 =, ㅁ 두개추가 가능하니까 * 2, -1에서 | 하나만 추가 가능하기 때문에 * 1 입니다.