Week 4 (Dp) - 문제 11726번 (2×n 타일링)
2023. 7. 22. 15:31ㆍ백준 문제와 소스 코드
문제:
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

입력:
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력:
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
예제 입력1:
2
예제 출력1:
2
예제 입력2:
9
예제 출력2:
55
코드:
#include <iostream>
using namespace std;
long long rst[1001]; //Dp를 사용하기
long long solution(int N) //함수 구현하기
{
if (N == 1 || N == 2) //기저 상태
return rst[N] = N;
if (rst[N] > 0) //이미 구해져있다면 바로 반환
return rst[N];
rst[N] = (solution(N - 1) + solution(N - 2)) % 10007; //점화식 + 문제에서 원하는 출력
return rst[N];
}
int main()
{
int n;
cin >> n;
cout << solution(n);
return 0;
}
설명:
주석 참고
'백준 문제와 소스 코드' 카테고리의 다른 글
| Week 4 (Dp) - 문제 1699번 (제곱수의 합) (0) | 2023.07.24 |
|---|---|
| Week 4 (Dp) - 문제 1463번 (1로 만들기) (0) | 2023.07.22 |
| Week 4 (Dp) - 문제 1904번 (01타일) (0) | 2023.07.22 |
| Week 4 (Dp) - 문제 2193번 (이친수) (0) | 2023.07.21 |
| Week 2 (자료구조) - 문제 2493번 (탑) (0) | 2023.07.20 |