Python์ ๋ด๋ถ ํจ์๋ฅผ ์ด์ฉํ ํ์ด๋ฅผ ๋ณธ์ ์ด ์์ด์
ํด๋น ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ถ์๋ค.
์ฝํ ๋ฌธ์ ํ์์ ๋ฐฑ์ค์ฒ๋ผ ์ ๋ ฅ์ ์ค์ค๋ก ๋ฐ๋ ํ์์ด ์๋๋ผ
ํ๋ก๊ทธ๋๋จธ์ค์ฒ๋ผ ํจ์๋ด๋ถ๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ด๋ค
๋ํ DFS๋ ์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํ ๋์
ํ์ํ ๋ด์ฉ์ด๋ผ ์๊ฐ์ด ๋ค์ด์ ์ด๋ ๊ฒ ์ ๋ฆฌํ๊ฒ ๋์๋ค.
ํ๋ก๊ทธ๋๋จธ์ค์ ์ผ๋ฐ์ ์ธ ํ์์ ๋จผ์ ์ดํด๋ณด์
ํด๋น solution์ n์ธ์๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์ ์ฑ์ ์ด ์งํ๋ ๊ฒ์ด๋ค.
def solution(n):
answer = n + 1
return answer
print(solution(10)) # 11
๋ง์ฝ ๋ค์๊ณผ ๊ฐ์ ์ํ์์ solution๋ด๋ถ์ ์ ์ธํ ๋ณ์๋ฅผ
์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํ๊ฒ ๋๊ฐ?
ํจ์ ์์ ํจ์๋ฅผ ์์ฑํ ์ ์๋ค!
๋ค์์ node๋ฅผ 3๊ฐ ๋ฐฉ๋ฌธํ๋ ์ฝ๋์ด๋ค
def solution():
def dfs(level):
if level != 3:
dfs(level+1)
dfs(0)
์ฌ๊ธฐ์ solutionํจ์๋ ์ธ๋ถํจ์
dfsํจ์๋ ๋ด๋ถํจ์๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋น์ฐํ solution๋ ํจ์์ด๋ฏ๋ก ํธ์ถํด์ผ ์์ ์ฝ๋๋ฅผ ์คํ์ํฌ ์ ์์ ๊ฒ์ด๋ค
ํ ์ํ์์ solution์ ํธ์ถํด๋ ์๋ฌด๊ฒ๋ ์ถ๋ ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ถ๋ ฅํ์ง ์์๋ค.
์กฐ๊ธ ๋ ๋์๊ฐ์
"dfsํจ์๋ solution์์ ์์ผ๋๊น solution์ ์ ์ธํ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ง ์์๊น?"
ํ๋ ์๊ฐ์ด ๋ค์๋ค๋ฉด ๋ฐ์๐
๋ค์ ์ฝ๋๋ฅผ ๋ณด๊ณ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํด๋ณด์
def solution():
answer = 0:
def dfs(level):
if level != 3:
answer += 1
dfs(level+1)
dfs(0)
return answer
print(solution())
์ ๋ต์ 3! ์ด๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ์์ฝ๊ฒ๋ ํ๋ ธ๋ค.
ํด๋น ์ฝ๋์์๋ dfs๋ด๋ถ answer += 1 ๋ถ๋ถ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
"์ด๊ฑฐ ์๋ ค ์ฃผ์ง ์์ ๋ณ์๋ผ์ +1 ๋ชปํด"
๋ผ๋ ๋ด์ฉ์ ์ค๋ฅ์ด๋ค
solution๋ด๋ถ์์ dfs๋ถ๋ ๊ณ , solution ์์ง ์ ๋๋ฌ๋๋ฐ?!ํ ์ ์๋ค.
์ฝ๋๋ฅผ ํ๋๋ง ๋ ๋ณด๋๋ก ํ์
def solution():
node = 'node'
def dfs(level):
if level != 3:
print(node, level)
dfs(level + 1)
dfs(0)
solution()
#node 0
#node 1
#node 2
solution์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ ธ๋๋ฅผ ์ถ๋ ฅํ๋
ํด๋น ์ฝ๋๋ ๋ฌธ์ ์์ด ์๋ํ๋ค.
์ฆ, ์๊น ์๊ฐํ๋๋ก ๋ด๋ถํจ์์์๋ ์ธ๋ถํจ์์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค
๋ณ์๋ฅผ ๋ณ๊ฒฝํ ๋, ํจ์๋ ์ง์ญ ๋ณ์์์๋ถํฐ ๋ํ๊ฐ๋ฉฐ
๋ณ์๋ฅผ ์ฐพ๊ธฐ ๋๋ฌธ์ ๋ด๋ถ์ ์ ์ธ๋์ง ์์ ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ คํ๋ ์ค๋ฅ๋ฅผ ๋ด๋ ๊ฒ์ด๋ค!
๊ทธ๋์ ์ฌ์ฉํ ๊ฒ์ nonlocal
def solution():
answer = 0
def dfs(level):
nonlocal answer
if level != 3:
answer += 1
dfs(level + 1)
dfs(0)
print(answer)
solution()
# 3
์ด์ ์์ผ 3๊ฐ์ node๋ฅผ ๊ฑฐ์ณค๋ค๋ ์๋ฏธ์ ์๋ง์ ๋ต 3์ด ๋์๋ค..!
nonlocal <๋ณ์๋ช >์
์ง์ญ๋ณ์๊ฐ ์๋ ๋ฐ์ ์ ์ธ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค
์ง๊ธ๊น์ง ํ์ตํ ๋ด์ฉ์ ์์ฉํ ๋ค์ํ ๋ฌธ์ ๋ฅผ ํ๊ฒ ๋ ๊ฒ์ด ๊ธฐ๋๋๋ค..!
REFERENCE
https://dojang.io/mod/page/view.php?id=2365
'๐Language > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] List๋ผ๋ฆฌ ์ฐ์ฐ | zip | numpy | map (0) | 2023.03.28 |
---|---|
[Python] ์ ๋ ฅ ์ฒ๋ฆฌ ์ ๋ฆฌ | input | readline | ๊ณ์ ์ ๋ ฅ ๋ฐ๊ธฐ | ๋ฆฌ์คํธ๋ก ์ ๋ ฅ๋ฐ๊ธฐ (0) | 2023.02.05 |