๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming Language/Python

Python - ์ตœ๋Œ€ ์žฌ๊ท€ ํ•œ๋„ ๊นŠ์ด๋กœ ์ธํ•œ Runtime Error ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

728x90
๋ฐ˜์‘ํ˜•
SMALL

๐ŸŸก 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
๋ฐ˜์‘ํ˜•
LIST