전역변수도, 지역변수도 아닌 애매한 변수를 어떻게 써야하는지 때문에 고민이 많다가 nonlocal을 알게 되면서 빠르게 풀 수 있었다
nonlocal : 전역변수는 아니지만, 해당 함수 내의 지역변수도 아닌 변수를 사용하고 싶을 때 사용
풀이 방식 같은 경우에는, 재귀를 사용한 dfs가 떠올라서 dfs를 사용해서 풀었다
def solution(numbers, target):
answer = 0
n = len(numbers)
def dfs(i,result):
#nonlocal : 전역변수는 아니지만, 해당 함수 내의 지역변수도 아닌 변수를 사용하고 싶을 때 사용
nonlocal answer
if i==n:
if result==target:
answer += 1
return
else:
dfs(i+1, result+numbers[i])
dfs(i+1, result-numbers[i])
dfs(0,0)
return answer