[백준/BOJ] 백준 11726번 : 2×n 타일링
2020. 7. 20. 21:47ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/11726
2Xn 직사각형을 왼쪽부터 2X1타일로 채운 경우와, 1X2타일 2개로 채운 경우를 모두 고려한다.
코드
#include <iostream>
#include <cstring>
using namespace std;
int cache[1001];
int MOD = 10007;
int solve(int n)
{
//기저 사례
if (n == 2)
return 2;
else if (n == 1)
return 1;
int& ret = cache[n];
//ret가 -1이 아니면 이전에 계산했던것이다
if (ret != -1)
return ret;
//왼쪽을 2X1타일로 채운 경우와, 1X2타일 2개로 채운 경우를 모두 구한다
ret = solve(n - 1) + solve(n - 2);
ret %= MOD;
return ret;
}
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
//cache를 -1로 초기화 한다
memset(cache, -1, sizeof(cache));
int n;
int result;
cin >> n;
result = solve(n);
cout << result << "\n";
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 2579번 : 계단 오르기 (0) | 2020.07.21 |
---|---|
[백준/BOJ] 백준 1149번 : RGB거리 (0) | 2020.07.20 |
[백준/BOJ] 백준 9095번 : 1, 2, 3 더하기 (0) | 2020.07.20 |
[백준/BOJ] 백준 1463번 : 1로 만들기 (0) | 2020.07.20 |
[백준/BOJ] 백준 10950번 : A+B - 3 (0) | 2020.07.18 |