https://programmers.co.kr/learn/courses/30/lessons/43165
๋ฌธ์ ์ ํ : DFS / BFS
ํ์ด
dfs(idx, ๋์ ๊ฐ):
if idx == numbers์ ๊ฐ์ # ์ฌ๊ท ์ข
๋ฃ์กฐ๊ฑด : ๋ชจ๋ ์์๋ฅผ ๋ํ๊ฑฐ๋ ๋บ๋ค๋ฉด ์ข
๋ฃ
if ๋์ ๊ฐ == target: # ๋ชจ๋ ์์๋ฅผ ๋ํ๊ฑฐ๋ ๋บ๋๋ฐ, ๋์ ๊ฐ์ด target๊ณผ ์ผ์นํ๋ฉด answer += 1
answer += 1
return
# ์์ง ์ข
๋ฃ์ ์ด๋ผ๋ฉด
dfs(idx, ๋์ ๊ฐ + numbers[idx]) # ๋ค์ ์ซ์๋ฅผ ๋ํ๋ ๊ฒฝ๋ก
dfs(idx, ๋์ ๊ฐ - numbers[idx]) # ๋ค์ ์ซ์๋ฅผ ๋นผ๋ ๊ฒฝ๋ก
answer = 0
def dfs(max_len, cnt, result, target, numbers):
if cnt == max_len:
if result == target:
global answer
answer += 1
return
dfs(max_len, cnt + 1, result + numbers[cnt] ,target, numbers)
dfs(max_len, cnt + 1, result - numbers[cnt] ,target, numbers)
def solution(numbers, target):
global answer
max_len = len(numbers)
dfs(max_len, 0, 0, target, numbers)
return answer