반응형

수의 끝이 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]);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 1699 : 제곱수의 합  (0) 2021.11.12
백준 9465 : 스티커  (0) 2021.11.12
백준 11057 : 오르막 수  (0) 2021.11.12
백준 15990 : 1, 2, 3 더하기 5  (0) 2021.11.12
백준 16194 : 카드 구매하기 2  (0) 2021.11.12

+ Recent posts