본문 바로가기

알고리즘구현능력/문제해결능력

[java] 백준/10844 쉬운계단수

길이를 N이라 하고       L을 마지막 자리수값으로 할때  

N = 1

1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 9

dp[n][L] 1부터 9까지 1대입 0은 올수없으므로 제외 

N= 2

L이 0일떄

dp[2][0] = dp[1][1] -> 10 n이 1이고  l이 1인값 

L이 1~8 사이일때

dp[2][1] = dp[1][2] +dp[1][0] ->12 dp[1][0]은 01 이므로 dp[1][0]이 0이다..

dp[2][2] = dp[1][1] +dp[1][3] -> 21 , 23 길이가 1이고 마지막숫자가 1이나 3인값

....

L이 9일때

dp[2][9] = dp[1][8] 길이가 1이고 마지막숫자가 8 ->98

규칙...

이전자리가 0이면 그다음 자리엔 1

이전자리가 1이면 그다음자리엔 2 이나 0

이전자리가 2이면 그다음자리엔 3 이나 1

이전자리가 3이면 그다음자리엔 4 이나 2

이전자리가 4이면 그다음자리엔 5 이나 3

이전자리가 5이면 그다음자리엔 6 이나 4

이전자리가 6이면 그다음자리엔 7 이나 5

이전자리가 7이면 그다음자리엔 8 이나 6

이전자리가 8이면 그다음자리엔 9 이나 7

이전자리가 9이면 그다음자리엔 8