문제 보러 가기 👈 클릭!
from collections import deque
def solution(numbers, target):
answer = 0
N = len(numbers)
q = deque([(0, numbers[0]), (0, -numbers[0])]) #(마지막으로 더한 숫자 인덱스, 총합)
while q:
idx, sum_num = q.popleft()
if idx == N-1 and sum_num == target:
answer += 1
if idx + 1 < N:
for num in [numbers[idx+1], -numbers[idx+1]]:
q.append((idx+1, sum_num+num))
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]))