에르노트

파이썬 재귀 깊이 제한 해제 (sys.setrecursionlimit()) 본문

Dev/Python

파이썬 재귀 깊이 제한 해제 (sys.setrecursionlimit())

두콩 2021. 11. 2. 11:26

파이썬 재귀함수의 깊이 제한 해제

개인적으로 그닥 좋아하지는 않지만, 재귀함수는 코딩을 하다보면 언젠가는 사용해야 할 필수불가결한 로직 형태의 하나이다. 그런데 간결함을 추구하는 파이썬의 철학 때문인지 기본으로 설정된 재귀 깊이(1000)가 너무 얕다. 그래서 코딩테스트 등에서 재귀 함수 관련된 문제를 풀 때는 로직을 제대로 설계했어도  테스트케이스를 통과하지 못할 수도 있다.

 

그럴 때는 간단히 setrecursionlimit() 함수를 이용하여 문제를 해결할 수 있다. setrecursionlimit()은 표준모듈 sys에 들어있으므로 미리 import해서 사용한다.

import sys
sys.setrecursionlimit(10**6)

이러면 백만 번까지 재귀를 돌릴 수 있게 된다. 컴퓨터 성능이 따라주는 선에서 얼마든지 Recursion Limit(재귀 제한)을 늘려도 된다. 로직에는 분명히 문제가 없는데도 런타임 에러가 난다면 한번쯤 재귀 깊이 제한을 생각해보자!

Comments