#include <iostream>
using namespace std;
int DP[1001];
int main(void)
{
int a=0;
cin>>a;
DP[1]=1;
DP[2]=2;
for(int i=3; i<=1000; i++)
{
DP[i]=(DP[i-1]+DP[i-2])%10007;
}
cout<<DP[a];
return 0;
}
이 문제도 굉장히 간단한 문제이다.
그림으로 설명하겠다.
가로의 길이가 1인 블럭과 2인 블럭이 있기 때문에 이전거와 이이전거만 확인하면 된다.
오른쪽에 블럭을 추가한다고 상상해 보자!!
DP[i]=(DP[i-1]+DP[i-2])%10007
'백준 > 동적계획법' 카테고리의 다른 글
[백준] C++ 11052(카드 구매하기) (0) | 2024.07.07 |
---|---|
[백준] C++ 2293(동전) (1) | 2024.07.07 |
[백준] C++ 1003(피보나치 함수) (0) | 2024.07.04 |
[백준] C++ 9095(1,2,3 더하기) (0) | 2024.07.04 |
C++ 2579번(계단 오르기) (0) | 2024.06.25 |