이렇게 깊이 탐색으로 모든 숫자를 다 더하고 빼는 경우를 구한 뒤, 마지막에 계산된 숫자가 target 수와 같다면 count 값을 +1 해주는 식으로 생각하였다.
(여기서 주의할 점은, 첫번째 숫자도 +인 경우와 -인 경우 모두 고려하여 구해야한다.)
💻 CODE
count = 0 #총 개수 구하기위한 변수
def dfs(i, result, numbers, target) : #i= 깊이(숫자를 끝까지 사용했는지 보기 위해), result = 마지막에 계산된 수
global count
if i == len(numbers) : #제시된 수를 끝까지 사용하였다면(깊이가 끝까지 탐색하였다면)
if result == target : #계산된 숫자와 target 값이 같다면
count+=1 #총 개수를 늘려줌
return
else : #깊이가 끝까지 안됐으면
dfs(i+1, result+numbers[i], numbers, target) #그 다음 수를 +하여 다시 dfs 탐색
dfs(i+1, result-numbers[i], numbers, target) #그 다음 수를 -하여 다시 dfs 탐색
def solution(numbers, target):
result = 0
dfs(0, result, numbers, target)
return count