문제 링크 - https://programmers.co.kr/learn/courses/30/lessons/43165
DFS/BFS로는 도저히 어떻게 풀어야 하는지 감이 안와서 product를 사용해서 풀었다.
from itertools import product
def solution(numbers, target):
a = list(product(['+', '-'], repeat = len(numbers)))
cnt = 0
for i in a:
result = 0
for j in range(len(i)):
if i[j] == '+':
result += numbers[j]
else:
result -= numbers[j]
if result == target:
cnt += 1
return cnt
from collections import deque
def solution(numbers, target):
answer = 0
idx = 0
n = len(numbers)
queue = deque()
queue.append([numbers[0], 0])
queue.append([-1 * numbers[0], 0])
while queue:
x, idx = queue.popleft()
idx += 1
if idx < n:
queue.append([x + numbers[idx], idx])
queue.append([x - numbers[idx], idx])
else:
if x == target:
answer += 1
return answer