> For the complete documentation index, see [llms.txt](https://heunnajo.gitbook.io/algorithms-problem-solving-skills/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://heunnajo.gitbook.io/algorithms-problem-solving-skills/dynamic-programming/climbing-number.md).

# Climbing Number

맞은 문제 복습

정답 코드에서는 d\[1]\[ i ]를 1로 먼저 초기화해주었다.

```java
for(int i=0;i<=9;i++) {
    d[1][i] = 1;
}
for (int i=2; i<=n; i++) {
    for (int j=0; j<=9; j++) {
        for (int k=0; k<=j; k++) {
            d[i][j] += d[i-1][k];
            d[i][j] %= mod;
        }
    }
}
```

나는 d\[0]\[0] = 1로 해주고, 다행히(?) 자바에서 정수형 2차원 배열이 0으로 초기화되어있어서 일반화된 점화식에서 d\[1]\[ i ]이 1로 올바르게 값이 들어가있었다.

```java
d[0][0] = 1;
		for(int i=1;i<=n;i++) {
			for(int j=0;j<=9;j++) {
				for(int l=0;l<=j;l++) {
					d[i][j] += d[i-1][l];
				}
				d[i][j] %= mod;
			}
		}
```

**느낀 점**

* 둘 다 정답이지만, d배열의 초기값을 어떻게 하는지가 중요하고, 초기값을 운좋게 들어맞은 것 같아서 위의 첫번째 방법이 더 좋은 초기화 방법인 것 같다. 앞으로 점화식을 구현할 때 초기값을 잘 생각해서 일반화된 점화식에 함께 넣을지, 따로 뺄지 생각하고 구현하면 더 좋을 것 같다.
* Java에서 **int** 1차원, 2차원 배열은 **0**으로 **초기화**되어있다!
* Java에서 **boolean** 1차원 배열, 2차원 배열은 **false**으로 **초기화**되어있다!
