BFS를 통해 가능한 모든 수를 체크, 마지막 수까지 조합(+/-)한 결과가 타겟 넘버와 동일하다면 개수를 카운트.
import Foundation
func solution(_ numbers: [Int], _ target: Int) -> Int {
var answer = 0
var queue = [(Int, Int)]()
queue.append((numbers[0], 0))
queue.append((-1 * numbers[0], 0))
var index = 0
let numberCnt = numbers.count
while queue.count > index {
let curData = queue[index]
let curNum = curData.0
let curIdx = curData.1
let nextIdx = curIdx + 1
if nextIdx < numberCnt {
queue.append((curNum + numbers[nextIdx], nextIdx))
queue.append((curNum - numbers[nextIdx], nextIdx))
} else {
if curNum == target {
answer += 1
}
}
index += 1
}
return answer
}