모든 조합을 만들어서, 연산을 해보고 target
과 같으면 answer
값을 1씩 증가시킨다.
문제
https://programmers.co.kr/learn/courses/30/lessons/43165
내가 작성한 코드
Swift
import Foundation
func solution(_ numbers:[Int], _ target:Int) -> Int {
var answer = 0
let n = numbers.count
var picked = [Bool]()
let op = [true, false]
func pick(toPick: Int) {
if toPick == 0 {
var sum = 0
for i in 0..<n {
if picked[i] {
sum += numbers[i]
} else {
sum -= numbers[i]
}
}
if sum == target {
answer += 1
}
return
}
for i in 0..<2 {
picked.append(op[i])
pick(toPick: toPick - 1)
picked.removeLast()
}
}
pick(toPick: n)
return answer
}