반응형

백준에서 1012번 문제 (유기농 배추)를 풀던 중 DFS알고리즘을 사용하여 제출해보니 런타임 에러 (RecursionError)가 발생하였습니다. 찾아보니 백준 채점시스템에서는 최대 재귀 깊이를 1,000을 default값으로 정해놓았다고 합니다. 이 런타임 에러 (RecursionError)는 그 최대 깊이를 초과하여 재귀 호출을 하기 때문에 발생합니다.

해결방법으로는 sys.setrecursionlimit() 를 사용하여 최대 재귀 깊이를 늘려주는 방법이 있습니다.

오류가 발생한 소스 코드 맨 윗 부분에 아래와 같은 코드를 삽입하여주면 해결이 가능합니다.
# sys.setrecursionlimit() 괄호 안에는 지정할 최대 재귀 깊이를 넣어주면 됩니다. 
# 아래의 코드에서는 (10**7)로 제한(지정)을 해주었습니다. 
import sys 
sys.setrecursionlimit(10**7) # 최대 재귀 깊이 10,000,000으로 제한

''' 
런타임에러(RecursionError)가 발생하였던 소스코드
'''

위의 코드블럭과 같이에러가 발생하였던 소스코드 가장 윗 부분에
import sys
sys.setrecursionlimit(10**7)
를 작성하여 주시면 런타임 에러(RecursionError)가 해결이 됩니다. 이 방법을 사용하였는데도 런타임 에러가 발생한다면 sys.setrecursionlimit(10**7)에서 괄호 안에 들ㅇ어간 10**7을 보다 더 큰 수로 바꾸어 주면 됩니다. ex) 10**9

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기