알고리즘/알고리즘 문제풀이
PrefixSum_Leetcode_1248. Count Number of Nice Subarrays [swift]
Downey
2025. 3. 11. 17:02
https://leetcode.com/problems/count-number-of-nice-subarrays/description/
문제접근
nums의 부분집합 중, k개 이상의 odd를 가진 부분집합의 갯수를 반환
nums를 0 과 1로 변환한다. 그리고 PrefixSum을 수행한다.
그러면 sum은 odd의 갯수이다.
정답코드
더보기
class Solution {
func numberOfSubarrays(_ nums: [Int], _ k: Int) -> Int {
var nums = nums.map { $0 % 2 }
var sol = 0
var map: [Int: Int] = [0: 1]
func recursive(_ curSum: Int, _ curIdx: Int) {
guard curIdx < nums.count else { return }
let newSum = curSum + nums[curIdx]
sol += map[newSum-k, default: 0]
map[newSum, default: 0] += 1
recursive(newSum, curIdx + 1)
map[newSum]! -= 1
}
recursive(0,0)
return sol
}
}