글 작성자: 이지원🌩️

모든 조합을 만들어서, 연산을 해보고 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
}
반응형