Search
📒

2xn 타일링 2

주차
10주차
문제번호
11727
언어
티어
실버
유형
DP
nj_Blog
nj_상태
이해도
66%
풀이
사람
이해도 2
13 more properties

문제접근

1.
첫번째 접근
위의 사진처럼 f(n)은 f(n-1)에서 2 * 1타일만 하나 더 붙은 형태와 f(n-2)에서 1*2타일 2개 붙은 형태와 2*2타일 하나 더 붙은 형태라는 것을 알 수 있음
점화식
f(n)=f(n1)+f(n2)2f(n) = f(n-1) + f(n-2) * 2
//pseudo code cin >> n; dp[1] = 1 dp[2] = 3 while ( <= n) dp[i] = (dp[i-1] % 10007 + dp[i-2]*2%10007)%10007 cout << dp[n]
C++
복사

놓쳤던 부분

코드

2016 KB

0 ms

#include <iostream> #include <vector> int n; std::vector<int> dp; void input_setting() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { std::cin >> n; dp.resize(n + 1); } void solution() { int i; i = 2; dp[1] = 1; dp[2] = 3; while (++i <= n) dp[i] = (dp[i - 1] % 10007 + dp[i - 2] * 2 % 10007) % 10007; std::cout << dp[n] << "\n"; } int main(void) { input_setting(); input(); solution(); return (0); }
C++
복사