모든 숫자를 + 혹은 - 연산을 대입했을 경우를 확인하면서 마지막 원소에 해당하는 값을 확인했을때 타겟 넘버와 같으면 개수를 하나씩 늘려주는 방법으로 풀이함.
이때 모든 경우를 확인하기 위해서 단순한 형태의 DFS를 사용함.
visited = []
cnt = 0
def dfs( graph, idx, total, target):
global cnt
if idx == len(graph):
if total == target:
cnt += 1
return
dfs(graph, idx+1, total + graph[idx], target)
dfs(graph, idx+1, total - graph[idx], target)
def solution(numbers, target):
global visited, cnt
answer = 0
visited = [False]*len(numbers)
dfs(numbers, 0, 0, target)
answer = cnt
return answer