인프런 커뮤니티 질문&답변

한유태님의 프로필 이미지
한유태

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

7-Q

7-Q 질문있습니다 :)

해결된 질문

작성

·

36

0

안녕하세요 선생님 🙂

어려운 문제는 아니었던거 같지만 모르겠는 부분이 생겨서 질문 드립니다.

 

  1. visual studio에서는 배열의 범위가 초과되었다는 에러가 계속 뜹니다. 선생님 코드와 다른 점이 없는지 여러 번 검증해보았지만 차이가 없어서 백준에 제출해봤는데요, 맞았다고 하더라구요..

     

    arr의 크기를 18이 아닌 20으로 잡아도 동일한 에러가 잡힙니다. 컴파일러에서 왜 에러가 뜨는건지 모르겠습니다..

image.png

 

http://boj.kr/f91936720fc54768adb00def9dc32b35

 

  1. 메모이제이션 범위가 이해되지 않아 다른 숫자들로 넣어봤는데요, 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에서 배열의 범위 초과 에러가 발생하는 부분에 대해, 유사한 이슈를 겪은 다른 수강생들의 질문과 답변을 보실 수 있습니다.

  1. 런타임 에러 질문있습니다!
    • 런타임 에러와 관련된 유사한 문제를 다루고 있습니다. 강사님이 인덱스 관련 에러에 대해 설명하며, string을 int로 변환할 때의 문제를 지적합니다.
  2. 4-B 문제 메모리 초과 문의
    • 배열의 크기를 잘못 설정해서 발생한 메모리 초과 문제에 대해 다룹니다. 강사님이 인덱스 설정의 중요성에 대해 설명합니다.
  3. 시간초과 관련 질문입니다!
    • 코드가 배열의 범위를 벗어났을 때 발생하는 문제에 대해 다룹니다. 강사님이 Visual Studio와 관련된 배열 인덱스 문제와 컴파일러 차이에 대해 설명합니다.

메모이제이션 범위 설정

메모이제이션 범위를 설정하는 이유와 관련된 설명들을 찾았습니다.

  1. 1-L 질문 있습니다!
    • 코드의 최적화와 관련된 문제를 다루며, 성능 최적화 및 메모이제이션에 대한 일반적인 방법론을 설명합니다.

이 링크들을 통해 유사한 문제에 대한 해결책을 얻으실 수 있을 겁니다. 추가적으로, 메모이제이션의 범위를 설정할 때는 코드의 특성과 문제의 요구사항에 맞게 설정하는 것이 중요합니다. 필요한 범위 내에서 최적화해야 하며, 범위를 줄이거나 늘리면 성능 및 정확도에 영향을 미칠 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

한유태님의 프로필 이미지
한유태

작성한 질문수

질문하기