코드
def dfs(numbers, index=0, total=0, target=0):
if index == len(numbers):
return 1 if total == target else 0
number = numbers[index]
return dfs(numbers, index + 1, total + number, target) + dfs(numbers, index + 1, total - number, target)
def solution(numbers, target):
return dfs(numbers, target=target)
# Product 방식
from itertools import product
def solution(numbers, target):
l = [(x, -x) for x in numbers]
s = list(map(sum, product(*l)))
return s.count(target)
product
product
함수는 카디션곱을 해준다.
a = ['ab', '12', 'AB']
list(product(*a))
[('a', '1', 'A'),
('a', '1', 'B'),
('a', '2', 'A'),
('a', '2', 'B'),
('b', '1', 'A'),
('b', '1', 'B'),
('b', '2', 'A'),
('b', '2', 'B')]
풀이
각 숫자별
+/-
기호를 넣은 경우의 수를 만들어map(sum, 카디션곱)
리스트를 만든다
target
의 개수를 센다