Climbing Number

맞은 문제 복습

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

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로 올바르게 값이 들어가있었다.

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으로 초기화되어있다!

Last updated