0207free   2년 전

힙소트로 주어진 배열을 정렬한 후

정렬된 배열에서 중복된 수를 제거하고

이진탐색으로 크기 순서를 받아와 출력했습니다.

지금 이 코드는 '메모리 초과'가 뜨고 있는데

문제의 N의 최대값이 1,000,000이므로

int 배열 3개를 동적할당 시켰다고 하더라도

4 x 1,000,000 x 3  = 12MB니까

512MB인 메모리 조건보단 훨씬 작은것 아닌가요?

메모리 초과가 왜 나는지 알려주시면 정말 감사하겠습니다.

rhdqor213   2년 전

C99로 그대로 제출하니까 맞았습니다를 받습니다.

0207free   2년 전

일단 자체 해결에 성공했습니다.

동적할당의 크기 때문에 메모리 초과가 나는건 아니라는 판단에서 다른 경우의 수를 찾아보고, 의심해보니

이진탐색에서 재귀함수를 사용할 때 n이 커지면 메모리에 많은 부담을 주지 않을까 하는 판단이 들었습니다.

이진탐색을 재귀함수 형식이 아니라 while 반복문 형태로 만들어주니까 정상적으로 문제가 풀렸습니다.

@rhdqor213 오 그렇군요. C99에서 성공하는 것은 또 왜일까요? 할당된 메모리 조건이 다른건지..



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