๐ณ ๋งํฌ
ํ๋ก๊ทธ๋๋จธ์ค ํ๊ฒ๋๋ฒ
๐ ๋ฌธ์
n๊ฐ์ ์์ด ์๋ ์ ์๊ฐ ์์ต๋๋ค. ์ด ์๋ฅผ ์ ์ ํ ๋ํ๊ฑฐ๋ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด [1, 1, 1, 1, 1]๋ก ์ซ์ 3์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ค์ฏ ๋ฐฉ๋ฒ์ ์ธ ์ ์์ต๋๋ค.
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
์ฌ์ฉํ ์ ์๋ ์ซ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers, ํ๊ฒ ๋๋ฒ target์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ์ซ์๋ฅผ ์ ์ ํ ๋ํ๊ณ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐พ ํ์ด ๋ฐฉ๋ฒ
์ํ ํธ๋ฆฌ๋ฅผ ์๊ฐํด๋ณด๋ฉด, ๊ฐ numbers์ ์์์ ๋ํด์ ์ทจํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ๋ํ๊ฑฐ๋, ๋นผ๊ฑฐ๋ ๋ ์ค ํ๋์ด๋ค.
๋ฐ๋ผ์, dfs์์๋ Level์ ๋ํ๋ด๋ L์ด๋ผ๋ ๋ณ์์ ํฉ์ฐ ๊ฐ์ธ total์ ์ ๋ฌํด์, L์ด numbers์ ๊ธธ์ด์ ๊ฐ์ ๋ total ๊ฐ์ด target๊ณผ ๊ฐ์ผ๋ฉด cnt๋ฅผ 1 ์ฆ๊ฐ์ํจ๋ค.
๋ชจ๋ ํ ์คํธ์ผ์ด์ค ์ฑ๊ณต ์ฝ๋
def solution(numbers, target):
n = len(numbers)
cnt = 0
def dfs(L, total):
if L == n:
if total == target:
nonlocal cnt
cnt += 1
else:
dfs(L+1, total+numbers[L])
dfs(L+1, total-numbers[L])
dfs(0,0)
return cnt