프로그래머스 문제는 살짝 다르다. 푸는 방법은 똑같다
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×17 직사각형을 채운 한가지 예이다.
1가지
2가지
arr[n] = arr[n-1] + arr[n-2]*2
#include <iostream>
#include <algorithm>
using namespace std;
int arr[1000] = { 0 };
int main() {
int n;
cin >> n;
arr[0] = 1;
arr[1] = 3;
for (int i = 2; i < n; i++){
arr[i] = (arr[i - 1] + arr[i - 2] * 2)%10007;
}
cout << arr[n - 1] << endl;
}
#include <vector>
using namespace std;
int solution(int n) {
int d[60000];
d[0] = 1;
d[1] = 2;
for(int i=2; i<n; i++){
d[i] = (d[i-1] + d[i-2])%1000000007;
}
return d[n-1];
}