DevYoon
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๊ฒ ๋๋ฒ (Python) ๋ณธ๋ฌธ
link ๐ https://programmers.co.kr/learn/courses/30/lessons/43165
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ํ๊ฒ ๋๋ฒ
n๊ฐ์ ์์ด ์๋ ์ ์๋ค์ด ์์ต๋๋ค. ์ด ์ ์๋ค์ ์์๋ฅผ ๋ฐ๊พธ์ง ์๊ณ ์ ์ ํ ๋ํ๊ฑฐ๋ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด [1, 1, 1, 1, 1]๋ก ์ซ์ 3์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ค์ฏ ๋ฐฉ๋ฒ์ ์ธ ์
programmers.co.kr
1๏ธโฃ DFS๋ฅผ ํ์ฉ
2๏ธโฃ ๋ํ๊ฑฐ๋ ๋นผ์ target์ ๋ง๋๋ ๋ฌธ์ ์ด๋ฏ๋ก, sums ๋ณ์์ numbers[level]์ ๋ํด์ค ๋์ ๋นผ์ค ๋๋ก ๋๋์ด ๋๋ ค์ฃผ์๋ค.
โ๏ธ ํ์ด
def solution(numbers, target):
answer = 0
def dfs(level, sums):
nonlocal answer
if level == len(numbers):
if sums == target:
answer += 1
return
dfs(level+1, sums+numbers[level])
dfs(level+1, sums-numbers[level])
dfs(0, 0)
return answer
โ๏ธ ๋ฉ๋ชจ
- ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ํ์ด ๋ฐฉ์์ด ์์ง๋ ๋ฏ์ค๋ค ํํ๐ฅฒ ๋ฌธ์ ์ด์ฌํ ํ์ด์ ์ผ๋ฅธ ์ต์ํด์ ธ์ผ์ง
- global answer๋ก ์ฒ์์ ํ์๋๋ ์ค๋ฅ๊ฐ ๋ด๊ณ , nonlocal๋ก ๋ฐ๊ฟ์ฃผ์๋ค. ๋งค๋ฒ global๋ง ์ฐ๋ค๊ฐ nonlocal ์ฐ๋ ์๋กญ๋ค...โจ nonlocal ๋ฐฐ์ฐ๊ณ ์๊น๋งฃ๊ฒ ์์ด๋ฒ๋ฆฌ๊ณ ์์๋ค๐