kano2812   3년 전

"MemoryError: stack overflow" 에 대해 질문드립니다.

문제는 index를 활용해서 root의 왼쪽과 오른쪽을 나눈 후, 재귀적으로 풀었습니다.

그런데 궁금한 점은,

제가 ide로 파이참을 사용하는데 한쪽으로 10만개 연속적으로 이어진 트리를 인풋에 넣으면

  [Previous line repeated 6425 more times]
  File "", line 9, in find_root
  MemoryError: stack overflow

란 설명과 함께 실행이 멈춥니다.

그런데 백준에다 코드를 넣으면 맞았다고 하는데 그 이유가 궁금합니다.

파이참에서 돌린 소스는 첨부하였습니다.

kano2812   3년 전

여기저기 검색하고, 시도해보면서 알아본 결과는, 

파이참 같은 ide는 기본적으로 재귀 스택의 limit을 풀어도 메모리에는 제한이 걸려있습니다.

sys.setrecursionlimit(100000)을 하더라도 대략 9800개의 제귀 스택이 생기면 메모리 초과로  memory error가 뜹니다.

그래서 우분투에서 같은 코드를 돌려보았더니 대략 50000개의 재귀 스텍까지는 error가 발생하지 않았습니다.

(50000 이상에서는 제 컴퓨터가 렘이 8gb가 단순히 렘 메모리가 부족해서라고 생각합니다.)

그래서 백준에서는 소스 코드를 돌렸을 때 문제가 없었다고 생각합니다.

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