eollyea   3년 전


str 사이즈를 키우면 컴파일에러가 나고 

(.text+0x2b8): additional relocation overflows omitted from the output

str사이즈를 줄이면 메모리 초과가 나옵니다. 

어떻게 해야 할까요?

지금 str을 구하는데 너무 시간이 많이 걸려서 오류가 나는것 같습니다.

21번째 줄에 rec에 n을 넣는게 아니라 이것보다 크기를 작게 넣어야 할것같은데 (n번째 문자를 구하는 것이니)

마땅한 해결법이 떠오르지 않아 질문드립니다.

답변해주시면 정말 감사드립니다.

slah007   3년 전

1. 너무 큰 크기의 배열은 생성할 수 없습니다. (컴파일 자체가 안됩니다)

2. 메모리 초과는 배열 크기보다 큰 인덱스를 넣어서 일어나는 초과를 의미하는 것이 아닙니다. 말 그대로 메모리를 문제에서 주어진 제한보다 많이 사용한 것입니다. 만약 동적할당으로 억지로 엄청 큰 배열을 생성하려고 하면 너무 많은 메모리를 사용해서 메모리 초과가 납니다.

또한, n<=1e9라면  재귀호출도 10억번이나 발생하는데 최대 재귀 호출 수 초과로 런타임 에러와 재귀호출에 필요한 메모리 사용으로 메모리 초과를 일으킵니다.

eollyea   3년 전

그러면 문제를 이런식으로 접근한것 자체가 잘못된건가요? 여기서 코드 수정이 아니라 그냥 완전 다른 방식으로 접근해야 하는 거죠? 

slah007   3년 전

네 글자를 하나씩 줄여가면서 푸는 문제는 아닙니다.

아마 S(k)가 몇 글자인지를 점화식으로 구해보시면 금방 푸실 수 있을겁니다.

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