https://www.acmicpc.net/problem/2193
점화식 dp[i] = dp[i-1] + dp[i-2] 이용
첫 숫자는 무조건 10이다.
10 뒤로 오는 숫자가 문제인데,
만약 1이 올 경우는, dp[i-2]와 같다.
만약 0이 올 경우는, dp[i-1]의 맨 앞 자리 숫자를 제외한 모두와 같다.
ex)
2: 10
3: 101 100
4 : 1010 1001 1000
5 : 10010 10001 10000 10101 10100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <iostream> using namespace std; int main(){ long dp[91]; int N; cin >> N; dp[1] = 1; dp[2] = 1; for(int i = 3; i <= N; i++){ dp[i] = dp[i-1] + dp[i-2]; } cout << dp[N]; } | cs |
반응형
'프로그래밍 > 문제풀이' 카테고리의 다른 글
| 백준 2294 (동전2) (0) | 2018.11.09 |
|---|---|
| 백준 2293 (동전1) (0) | 2018.11.07 |
| 백준 10844 (쉬운 계단 수) (0) | 2018.11.06 |
| 백준 2156(포도주 시식) (0) | 2018.11.03 |
| 백준 1107 (리모컨) (0) | 2018.11.03 |