๐ ๋ฌธ์ ์ค๋ช
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 ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ค ๋ฌธ์ ํ์ด
์ฃผ์ด์ง ๋ชจ๋ ์๋ฅผ ๋๋ฉด์ ๋ํ๋ ๊ฒฝ์ฐ์ ๋นผ๋ ๊ฒฝ์ฐ์ ๋ ๊ฐ๋๋ก ์ฌ๊ท ํธ์ถํ์ฌ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ result ๋ฆฌ์คํธ์ ์ ์ฅํ๋ค.
์ดํ ๋ฆฌ์คํธ์์ target๊ณผ ๋์ผํ ์์ ๊ฐ์๋ฅผ ๋ฐํํ๋ฉด ๋๋ค.
๐ ํ์ด ์ฝ๋
def dfs(idx, total):
global result, numbers_
if idx == len(numbers_):
result.append(total)
return
dfs(idx+1, total+numbers_[idx])
dfs(idx+1, total-numbers_[idx])
return
def solution(numbers, target):
global result, numbers_
numbers_ = numbers
result = []
dfs(0,0)
return result.count(target)