PS/문제 풀이
[프로그래머스/Swift] 43165번 - 타켓 넘버
시르베어
2025. 2. 2. 15:13
문제
https://school.programmers.co.kr/learn/courses/30/lessons/43165
풀이
- 전체를 순회하면서 타켓과 값이 같은지 찾아야 하므로 dfs 채용
- dfs가 종료되는 지점은 index가 배열의 개수를 넘어서는 시점, 이때 타겟과 현재까지의 합이 같은지를 판별
- dfs진행은 index+1과 현재까지의 합인 sum으로 확인
전체코드
import Foundation
func dfs(index:Int, sum: Int, result: Int, numbers: [Int], target: Int) -> Int{
if index == numbers.count {
if sum == target {
return result+1
}
return result
}
let a = dfs(index: index+1, sum: sum + numbers[index], result: result, numbers: numbers, target: target)
let b = dfs(index: index+1, sum: sum - numbers[index], result: a, numbers: numbers, target: target)
return b
}
func solution(_ numbers:[Int], _ target:Int) -> Int {
return dfs(index: 0, sum: 0, result: 0, numbers: numbers, target: target)
}