문제 : https://programmers.co.kr/learn/courses/30/lessons/43165
재귀로 풀려고 시도했는데 실패.. 거의 다 왔는데 조금만 더 고민해볼걸. 아래 풀이는 다른 분들 풀이 참고했음.
def solution(numbers, target):
tree = [0]
for num in numbers:
subtree = []
for leaf in tree:
subtree.append(leaf+num)
subtree.append(leaf-num)
tree = subtree
return tree.count(target)
def dfs(idx, numbers, target, value):
global answer
if idx == len(numbers) and value == target:
answer += 1
return
if idx == len(numbers):
return
dfs(idx+1, numbers, target, value + numbers[idx])
dfs(idx+1, numbers, target, value - numbers[idx])
def solution(numbers, target):
global answer
answer = 0
dfs(0, numbers, target, 0)
return answer
-> 프로그래머스 풀이 중 가장 좋아요 수 많은 풀이
def solution(numbers, target):
if not numbers and target == 0 :
return 1
elif not numbers:
return 0
else:
return solution(numbers[1:], target-numbers[0]) + solution(numbers[1:], target+numbers[0])