728x90
728x90
문제
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
#include<stdio.h>
// int DP(int n)
// {
// if(n==1) return 1;
// if(n==2) return 2;
// return (DP(n-1) + DP(n-2))%10007;
// }
int main(void)
{
int n = 0 ;
scanf("%d",&n);
int DP[1010] = {0,};
DP[0] = 1;
DP[1] = 1;
for(int i = 2; i <= n;i++)
{
DP[i] = (DP[i-1] + DP[i-2])%10007;
}
printf("%d\n",DP[n]%10007);
}
DP 문제들은 재귀호출로 풀면 시간초과가 자주 일어나기 때문에 배열로 푸시는것을 추천드립니다 ㅠㅠ ..시간 초과 때문에 3번이나 틀렸네요.. 그리고 문제에서 "10007로 나눈 나머지를 출력한다" 이런 문구가 자주 보이는데 이게 다 시간 초과를 예방할려고 힌트를 준거 같더라고요;; DP문제 너무 어려워요..
728x90
728x90
'Language > C' 카테고리의 다른 글
(C언어) 백준 11057번 : 오르막 수 - 컴도리돌이 (0) | 2020.03.27 |
---|---|
(C언어) 백준 10844번 : 쉬운 계단수 - 컴도리돌이 (0) | 2020.03.25 |
(C언어) 백준 9095번 : 1,2,3 더하기 - 컴도리돌이 (0) | 2020.03.23 |
(C언어) 백준 11727번 : 2 X n 타일링 2 - 컴도리돌이 (0) | 2020.03.20 |
(c언어) 백준 1463번 : 1로 만들기 - 컴도리돌이 (0) | 2020.03.16 |