
문제 설명
n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.
제한사항
주어지는 숫자의 개수는 2개 이상 20개 이하입니다.
각 숫자는 1 이상 50 이하인 자연수입니다.
타겟 넘버는 1 이상 1000 이하인 자연수입니다.
입출력 예
numbers target return
[1, 1, 1, 1, 1] 3 5
입출력 예 설명
문제에 나온 예와 같습니다.
접근 방법: 문제를 읽고 생각했던 방식은 해당하는 경우의 수들을 구한다음에 이중에 target 넘버와 동일한 방법의 수들을 answer에 저장하는 방식이었다.

우선 answer를 초기화하고 전체 numbers 배열의 개수들을 l이라고 선언한다.
그리고 인덱스 i를 0부터 시작하여 i가 l(전체 numbers 개수)보다 작으면 전체 numbers의 숫자들을 다 순회하지 못하였다는 뜻이 된다.
그러면 numbers 배열에 +,- 경우의 수들을 만들어 주고
i값을 l과 같아질 때 까지 반복한다.
i값과 l값이 같아지면(numbers의 모든 배열을 순회했다면)
앞서 numbers에 저장했던 경우의 수들을 합 중에서 target넘버와 값이 일치하는 경우의 수들을 answer에 저장한다.
코딩테스트.. 쉽지않다....
+) 위와 같이 현재의 scope내의 지역변수가 아니고, 전역변수도 아닌 변수 n을 사용할 때는 nonlocal키워드를 써준다.