Algorithm
백준 2193 : 이친수
쿠케캬캬
2021. 11. 12. 13:23
반응형
수의 끝이 1이라면 0만 붙일 수 있고,
수이 끝이 0이라면 0과 1을 붙일 수 있습니다.
dp[i][j]는 수 (i+1)에서 수의 끝이 j(0또는1)로 끝나는 경우의 수 입니다.
dp[i][0] = dp[i-1][0] + dp[i-1][1];
dp[i][1] = dp[i-1][0]
경우의 수는 dp[i][0] + dp[i][1] 입니다.
그런데 제출하고보니 dp[i] = dp[i-1] + dp[i-2]가 더 간단하게 성립합니다.
#include <cstdio>
int main() {
int n;
long long int dp[90][2] = { 0,1 }, s = 10;
scanf("%d", &n);
for (int i = 1; i < n; i++) {
dp[i][0] = dp[i - 1][0] + dp[i-1][1];
dp[i][1] = dp[i - 1][0];
}
printf("%lld", dp[n - 1][0] + dp[n - 1][1]);
}
반응형