티스토리 뷰

문제

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)
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함