인프런 커뮤니티 질문&답변
7-Q 질문있습니다 :)
해결된 질문
작성
·
84
0
안녕하세요 선생님 🙂
어려운 문제는 아니었던거 같지만 모르겠는 부분이 생겨서 질문 드립니다.
visual studio에서는 배열의 범위가 초과되었다는 에러가 계속 뜹니다. 선생님 코드와 다른 점이 없는지 여러 번 검증해보았지만 차이가 없어서 백준에 제출해봤는데요, 맞았다고 하더라구요..
arr의 크기를 18이 아닌 20으로 잡아도 동일한 에러가 잡힙니다. 컴파일러에서 왜 에러가 뜨는건지 모르겠습니다..

http://boj.kr/f91936720fc54768adb00def9dc32b35
메모이제이션 범위가 이해되지 않아 다른 숫자들로 넣어봤는데요, 0.0까지는 문제가 없더라구요. 메모이제이션 범위를 -0.5로 두신 이유가 궁금합니다.
답변 2
1
안녕하세요 유태님 ㅎㅎ
arr의 크기를 18이 아닌 20으로 잡아도 동일한 에러가 잡힙니다. 컴파일러에서 왜 에러가 뜨는건지 모르겠습니다..
-> 해당 코드 확인해봤는데요. 제 컴파일러에서는 에러가 뜨지 않습니다. 이부분은 저도 잘 모르겠습니다.. 다른 컴파일러를 사용해주세요.
참고로 다음의 코드는 문제가 있는 코드입니다. 18까지 잡았으면 17까지 참조되게 해야 합니다.
for (int j = i + i; j <= 18; j += i)
{
arr[j] = 0;
0.0까지는 문제가 없더라구요. 메모이제이션 범위를 -0.5로 두신 이유가 궁금합니다.
->
이 문제같은 경우 0.0이하인 수로 메모이제이션을 걸어도 됩니다.
double go(int idx, int x, int y){
if(idx == n) return isP[x] || isP[y] ? 1.0 : 0.0;
double &ret = dp[idx][x][y];
if(ret >= 0.0) return ret; 앞의 코드처럼 해도 됩니다.
-0.5는 그냥.. 0.0 이하인수중에서 하나 골라서 했습니다. ㅎㅎ
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. 유태님
질문하신 내용과 관련하여 유사한 문제를 다룬 기존 질문들을 찾아보았습니다. array 범위 초과 에러와 메모이제이션 범위 설정에 관한 문제에 대해 아래의 링크들을 참고하시면 도움이 될 것 같습니다.
배열 범위 초과 에러
Visual Studio에서 배열의 범위 초과 에러가 발생하는 부분에 대해, 유사한 이슈를 겪은 다른 수강생들의 질문과 답변을 보실 수 있습니다.
- 런타임 에러 질문있습니다!
- 런타임 에러와 관련된 유사한 문제를 다루고 있습니다. 강사님이 인덱스 관련 에러에 대해 설명하며, string을 int로 변환할 때의 문제를 지적합니다.
- 런타임 에러와 관련된 유사한 문제를 다루고 있습니다. 강사님이 인덱스 관련 에러에 대해 설명하며, string을 int로 변환할 때의 문제를 지적합니다.
- 4-B 문제 메모리 초과 문의
- 배열의 크기를 잘못 설정해서 발생한 메모리 초과 문제에 대해 다룹니다. 강사님이 인덱스 설정의 중요성에 대해 설명합니다.
- 배열의 크기를 잘못 설정해서 발생한 메모리 초과 문제에 대해 다룹니다. 강사님이 인덱스 설정의 중요성에 대해 설명합니다.
- 시간초과 관련 질문입니다!
- 코드가 배열의 범위를 벗어났을 때 발생하는 문제에 대해 다룹니다. 강사님이 Visual Studio와 관련된 배열 인덱스 문제와 컴파일러 차이에 대해 설명합니다.
- 코드가 배열의 범위를 벗어났을 때 발생하는 문제에 대해 다룹니다. 강사님이 Visual Studio와 관련된 배열 인덱스 문제와 컴파일러 차이에 대해 설명합니다.
메모이제이션 범위 설정
메모이제이션 범위를 설정하는 이유와 관련된 설명들을 찾았습니다.
- 1-L 질문 있습니다!
- 코드의 최적화와 관련된 문제를 다루며, 성능 최적화 및 메모이제이션에 대한 일반적인 방법론을 설명합니다.
- 코드의 최적화와 관련된 문제를 다루며, 성능 최적화 및 메모이제이션에 대한 일반적인 방법론을 설명합니다.
이 링크들을 통해 유사한 문제에 대한 해결책을 얻으실 수 있을 겁니다. 추가적으로, 메모이제이션의 범위를 설정할 때는 코드의 특성과 문제의 요구사항에 맞게 설정하는 것이 중요합니다. 필요한 범위 내에서 최적화해야 하며, 범위를 줄이거나 늘리면 성능 및 정확도에 영향을 미칠 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





