쥐수의 공부노트

백준 1182번 부분수열의 합 본문

바킹독 알고리즘/백트래킹

백준 1182번 부분수열의 합

쥐수 2023. 7. 20. 18:59
728x90

정답 :

let input = readLine()!.split(separator: " ").map{Int($0)!}
let n = input[0]
let m = input[1]
let array = readLine()!.split(separator: " ").map{Int($0)!}
var cnt = 0
func check ( num : Int, total : Int) {
    if num == n {
        if total == m {
            cnt += 1
        }
        return
    }
    check(num: num+1, total: total)
    check(num: num+1, total: total+array[num])
}
check(num: 0, total: 0)
if m == 0 {
    cnt -= 1
}
print(cnt)

마지막에 0일 경우에는 공집합을 제외하기에 cnt 에 -1 을 해준다

728x90

'바킹독 알고리즘 > 백트래킹' 카테고리의 다른 글

백준 9663번 N-Queen  (0) 2023.07.19
백준 15649번 N과 M (1)  (0) 2023.07.12