안녕하세요.
이것도 전에 파이썬으로 풀어본건데 예전에 어떻게 풀었는지 생각이나더라구요.
그래서 똑같은 방식 사용해서 Swift 로도 풀어봤습니다.
https://programmers.co.kr/learn/courses/30/lessons/43165
+를 해주는 경우, -를 해주는 경우 DFS를 이용해서 구했습니다.
먼저 파이썬으로 푼 코드입니다.
answer = 0
def solution(numbers, target):
# dfs로 풀기
def dfs(idx, numbers, target, value):
global answer
end = len(numbers)
if idx == end:
if target == value:
answer += 1
return
dfs(idx+1, numbers, target, value+numbers[idx])
dfs(idx+1, numbers, target, value-numbers[idx])
dfs(0, numbers, target, 0)
return answer
Swift로 푼 코드입니다.
import Foundation
func solution(_ numbers:[Int], _ target:Int) -> Int {
var ans = 0
var idx = 0
func dfs(_ idx:Int, _ numbers:[Int], _ current:Int, _ target:Int) -> Void {
if numbers.count == idx {
if current == target {
ans += 1
}
return
}
dfs(idx + 1, numbers, current + numbers[idx], target)
dfs(idx + 1, numbers, current - numbers[idx], target)
}
dfs(0, numbers, 0, target)
return ans
}