[백준/BOJ] 백준 11726번 : 2×n 타일링
2020. 7. 20. 21:47ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/11726
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
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 |