신규 블로그를 만들었습니다!
문제
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
코드 구현
// 백준 11726번 문제
// 2xn 타일링
#include <stdio.h>
int D[1001];
int dp(int n){
if(n <= 1){
return 1;
}else if(n == 2){
return 2;
}
if(D[n] != 0){
// 이미 계산된 값
return D[n];
}else {
// 계산 안된 값
// 문제 : 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를
// 10,007로 나눈 나머지를 출력한다.
D[n] = (dp(n-1) + dp(n-2)) % 10007;
return D[n];
}
}
int main(void){
int N = 0;
scanf("%d", &N);
printf("%d ", dp(N));
return 0;
}
※ 직접 문제 풀고 돌려본 뒤, 채점까지 마친 후에 작성한 글입니다.
더 좋은 방법이 있다면, 댓글로 알려주시면 감사하겠습니다 :)
관련 글
2018/05/02 - [Algorithm] - 알고리즘 :: 다이나믹 프로그래밍(DP) - 피보나치(Fibonacci) C/C++ 구현, 메모이제이션
2018/05/02 - [Algorithm/백준 온라인 저지] - 백준/11727번 :: 2xn 타일링 2 (C/C++ 구현)
'Algorithm > 백준 온라인 저지' 카테고리의 다른 글
백준/1003번 :: 피보나치 함수 (C/C++ 구현) - DP, 메모이제이션 (2) | 2018.05.02 |
---|---|
백준/11727번 :: 2xn 타일링 2 (C/C++ 구현) - DP, 메모이제이션 (4) | 2018.05.02 |
백준/2750번 :: 수 정렬하기 (c/c++) (6) | 2018.04.29 |
백준/2577번 :: 숫자의 개수 (JAVA) (6) | 2018.03.29 |
백준/1152번 :: 단어의 개수 (JAVA) (6) | 2018.03.29 |
최근댓글