leejs1030   2년 전

dp[1000][1000]이고, 제가 짠 함수에서는 comb(n, r)에서 dp[n][r]의 값을 반환하도록 물었습니다.

그런데, 만약에 comb(1000, 3)과 같은형태로 요청하게 된다면, dp는 0~999까지 있고, 1000번째는 없으므로 오류가 나야하는 것이 아닌가요?

주석에도 작성하였습니다.

이미 구하지 않은 값이라면, 위해서 값을 구한 다음 (36, 37, 38, 39번째 줄) mod 연산 후 arr[n][r]에 저장하고 arr[n][r]의 값을 반환합니다.

그런데, arr[1000][0], arr[1000][100] 등은 잘못된 접근일 것입니다. 왜 오류가 나지 않을까요?

lukek1101   2년 전

왜 arr[1000][0] 이나 arr[1000][100]이 잘못된 접근이죠..?

각각 1000combination 0 = 1 과 1000combination 100 = ~~

이렇게 어떤 값을 가지고 있지 않을까요?

다만 에러가 날 수 있어보이는 곳이 있네요;;

배열은 0부터 시작하는데 문제 조건은 N=1000 까지니까  배열 크기를 1000, 1000 보다 약간씩 더 키워보세요 ㅎㅎ

leejs1030   2년 전

@lukek1101

"arr[1000][0] 이나 arr[1000][100]이 잘못된 접근"이라고 말한 이유가 접근 자체가 잘못되었다는 것이 아니라

제 코드 상에서 접근을 하면 오류가 나야한다고 생각한 것(런타임에러, Out of bound)입니다. 말씀해주신

"

다만 에러가 날 수 있어보이는 곳이 있네요;;

배열은 0부터 시작하는데 문제 조건은 N=1000 까지니까 배열 크기를 1000, 1000 보다 약간씩 더 키워보세요 ㅎㅎ

"

대로, 원래는 배열의 크기를 약간 더 크게 잡아야하지만, 크게 잡지 않았음에도 런타임 에러가 나지 않는 이유를 묻는 것입니다.

- 이후 추가로 코드를 수정해보니, arr의 크기를 1000 * 900 으로 잡아도 통과(https://www.acmicpc.net/source...)합니다.

댓글을 작성하려면 로그인해야 합니다.