2293번 - 동전 1
정답코드를 보고나서 알고리즘은 이해를 했는데 배열의 초기화 부분이 아무리봐도 이해가 되지않습니다.
먼저 인풋값은 예제에 나와있는데로
3 10
1
2
5
를 넣어줬습니다.
line 15에서 맨처음 걸리는 if문의 조건이 j=1일때 인데
그럼 이때 수행하는 게 dp[1]=dp[1]+dp[1-1];
인데 dp[0]의 값은 line 7에서 1로 초기화 해줬기 때문에 있다쳐도
dp[1]의 값은 아무것도 초기화되지 않은 쓰레기값인데 어떻게 line 15가 제대로 컴파일 되는지 모르겠습니다..
그래서 line15 직전에 dp[1]을 출력해보면 0으로 초기화가 되있는데 대체 어느 부분에서 dp[1]이 초기화가 된거죠?
j=1이 아닌 다른값에 대해서도 같은 의문입니다..
이미 0으로 초기화가 되있는것 같은데 그럴거면
line3에서 전역변수로 선언할때 dp[10001]={0,}; 이런식으로 선언해야하는것 아닌가요?
int 전역변수는 0으로 초기화가 됩니다.
댓글을 작성하려면 로그인해야 합니다.
bsyzch 5년 전
정답코드를 보고나서 알고리즘은 이해를 했는데 배열의 초기화 부분이 아무리봐도 이해가 되지않습니다.
먼저 인풋값은 예제에 나와있는데로
3 10
1
2
5
를 넣어줬습니다.
line 15에서 맨처음 걸리는 if문의 조건이 j=1일때 인데
그럼 이때 수행하는 게 dp[1]=dp[1]+dp[1-1];
인데 dp[0]의 값은 line 7에서 1로 초기화 해줬기 때문에 있다쳐도
dp[1]의 값은 아무것도 초기화되지 않은 쓰레기값인데 어떻게 line 15가 제대로 컴파일 되는지 모르겠습니다..
그래서 line15 직전에 dp[1]을 출력해보면 0으로 초기화가 되있는데 대체 어느 부분에서 dp[1]이 초기화가 된거죠?
j=1이 아닌 다른값에 대해서도 같은 의문입니다..
이미 0으로 초기화가 되있는것 같은데 그럴거면
line3에서 전역변수로 선언할때 dp[10001]={0,}; 이런식으로 선언해야하는것 아닌가요?