Programming Language/Python

Python - μ΅œλŒ€ μž¬κ·€ ν•œλ„ 깊이둜 μΈν•œ Runtime Error ν•΄κ²° 방법

one2ye 2022. 6. 22. 21:43
728x90
λ°˜μ‘ν˜•

🟑 How to solve Python's Recursion ERROR?

 

βœ… λ°±μ€€ 문제 11123λ²ˆμ„ ν’€κ³  μ œμΆœν•˜λ˜ 쀑 λŸ°νƒ€μž„ μ—λŸ¬(recursion error)λ₯Ό λ§Œλ‚¬μ„ λ•Œ

βœ… μ•Œκ³ λ¦¬μ¦˜ 및 기본적인 λ‘œμ§μ€ λ‹€ λ§žλŠ”λ° μ™œ λŸ°νƒ€μž„ μ—λŸ¬(recursion error)κ°€ λœ¨λŠ”μ§€ μ§μž‘ν•˜μ§€ λͺ»ν•˜κ³  μžˆμ„ λ•Œ

βœ… κ·Έλž˜ν”„ 탐색 λ¬Έμ œμ—μ„œ μž¬κ·€ ν˜ΈμΆœμ„ μ‚¬μš©ν•˜μ—¬ ν”„λ‘œκ·Έλž˜λ°μ„ ν–ˆμ„ λ•Œ

 

 

μ—λŸ¬ λ°œμƒ

 

 

 

μœ„μ˜ κ²½μš°μ— ν•΄λ‹Ήν•œλ‹€λ©΄, 파이썬 μž¬κ·€ 깊이 μ œν•œμ— 걸렸을 κ°€λŠ₯성이 맀우 λ†’λ‹€. μš°λ¦¬λŠ” μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’€ λ•Œ μž¬κ·€ ν˜ΈμΆœμ„ μ΄μš©ν•˜μ—¬ ν‘ΈλŠ” κ²½μš°κ°€ ꡉμž₯히 λ§Žμ€λ°, 이 λ•Œ λ¬Έμ œμ—μ„œ μž¬κ·€λ₯Ό 많이 돌릴 경우 원인 λ―Έμƒμ˜ λŸ°νƒ€μž„ μ—λŸ¬(recursion error)에 λΉ μ§€κ²Œ λœλ‹€.

⚠️ 파이썬(Python)μ—μ„œλŠ” 1000번 μ΄μƒμ˜ μž¬κ·€(recursion)κ°€ λ°œμƒν•˜λ©΄ μ—λŸ¬κ°€ λœ¬λ‹€. κΈ°λ³Έ μž¬κ·€ 깊이 μ œν•œμ΄ 맀우 적기 λ•Œλ¬Έμ— λ°˜λ“œμ‹œ sys.setrecursionlimit() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μž¬κ·€ 깊이λ₯Ό 크게 μž‘μ•„μ£Όμ–΄μ•Ό ν•œλ‹€.

 

 

import sys
sys.setrecursionlimit(100000)

=> μ½”λ“œμ˜ 상단에 μž‘μ„±ν•΄μ£Όλ©΄ μž¬κ·€μ˜ μ΅œλŒ€ κΉŠμ΄κ°€ 100000으둜 λ°”λ€Œκ²Œ λœλ‹€. (κ΄„ν˜Έ μ•ˆμ˜ μˆ«μžλŠ” ν•„μš”μ— 따라 μžμ‹ μ΄ μž„μ˜μ μœΌλ‘œ μ„€μ • κ°€λŠ₯)

 

 

 

 

 

단, pypyμ—μ„œλŠ” sys.setrecursionlimit을 μ‚¬μš©ν•˜μ—¬ μž„μ˜λ‘œ μž¬κ·€μ˜ μ΅œλŒ€ 깊이λ₯Ό μ„€μ •ν•  수 μ—†λ‹€.

 

 

 

 

 

파이썬으둜 μž¬κ·€λ₯Ό μ‚¬μš©ν•΄ 문제λ₯Ό ν’€ λ•Œ(특히 BFS, DFS)λŠ” 항상 μœ„ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것이 μ’‹λ‹€!

 

 

 

 

 

728x90
λ°˜μ‘ν˜•