336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

DP문제


문제의 조건

45654 이런 수는 계단수라고 함 

: 인접한 수들의 차이가 +1, -1 가 나는 수를 '''계단수'''


이때 수의 자리수의 길이가 입력될 때 값을 구하는 것.


가장 맨앞의 수는 0 이 될 수 없고, 즉, 1-9 까지 가장 맨앞자리 차지함.

그 이후 0-9 까지 의 수가 적힌 수들이 있음.


F(N) 이라고 공식을 세운다면,

처음 F(1) = 9 이고 이는 [1,2,3,4,5,6,7,8,9]

 까지 총 9개의 수가 있음.

F(2) = 17 이고, [10,12, 21, 23, 32, 34, ..., 87, 89, 98] 총 17개의 수가 있음.


이것을 생각해보면, 

가장 앞자리 수는 0을 제외한 수.

이후 그 뒷 수는 0을 포함하는 수로 구성이 될 수 있음.


각 자리수 마다, memo의 위치를 정함.

수가 0일때, 1일때, .... 9일때 


이전 수에서 인접한 갯수가 이때 더해져야함.

f%5Bn%5D%5Bm%5D%3Df%5Bn-1%5D%5Bm-1%5D%2Bf%5Bn-1%5D%5Bm%2B1%5D%20 

인 경우가 됨.

그런데 특수한 경우가 양쪽 끝에 있으므로 첫자리 수가 0 이거나 혹은 9이거나 하는 경우는

case 0)

f%5Bn%5D%5B0%5D%3Df%5Bn-1%5D%5B1%5D%20 

case 9)

f%5Bn%5D%5B9%5D%3Df%5Bn-1%5D%5B8%5D%20 

로 이루어 져야 함. 왜냐면 9와 차이가 1나는 수는 8 뿐이고

0과 차이나는 수는 1 뿐이므로. 


그리고 입력으로 주어진 자리수의 memo 배열의 값을 인덱스 0 을 제외한 값을 모두 더하면 해당 자리수에서의 갯수가 됨.

result%3Df%5Bw%5D%5B1%5D%2B...%2Bf%5Bw%5D%5B9%5D%20 

 

그래서 그리면 위와 같아짐.



'PSNote > Problem Solving' 카테고리의 다른 글

[BOJ-4880]다음수  (0) 2017.07.17
[BOJ-1946]신입사원  (0) 2017.07.17
[BOJ-2108]통계학  (0) 2017.07.17
[BOJ-1850]최대공약수  (0) 2017.07.17
[BOJ-14502]연구소  (0) 2017.07.17

+ Recent posts