Algorithm/백준

[백준][10844번] 쉬운 계단 수

1일1코딩 2020. 3. 19. 22:31

https://www.acmicpc.net/problem/10844

 

10844번: 쉬운 계단 수

첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.

www.acmicpc.net

 

풀이과정

 

1. dp문제이다.

 

2. N자리수의 값이 K일 경우 N - 1 자리에는 K - 1, K + 1 값이 올 수 있다.

 

dp[N][K] = dp[N][K -1] + dp[N][K +1] 의 식을 구 할 수 있다.

 

3. 0과 9의 경우 -1과 10이 올 수 없으니 조건을 추가해주었다.

 

소스코드

더보기
#include<stdio.h>


typedef unsigned long long ull;

ull dp[101][10];

ull solution(int n)
{
	for (int i = 2; i <= n; i++) {
		for (int j = 0; j <= 9; j++) {
			
			dp[i][j] = 0;
			if (j - 1 >= 0) dp[i][j] += dp[i - 1][j - 1];
			if (j + 1 <= 9) dp[i][j] += dp[i - 1][j + 1];

			dp[i][j] %= 1000000000;
		}
	}

	ull sum = 0;
	for (int j = 0; j <= 9; j++) {
		sum += dp[n][j];
	}
	return (sum % 1000000000);
}

int main()
{
	int n;
	for (int i = 1; i <= 9; i++) {
		dp[1][i] = 1;
	}
	scanf("%d", &n);
	printf("%llu\n", solution(n));
	//1000000000
}