NumberOfSubarrays

Published at 2023-01-09

class Solution:
    def numberOfSubarrays(self, nums: List[int], k: int) -> int:
        res = cnt = 0
        l = 0
        restOddCnt = k
        
        for r in range(len(nums)):
            if nums[r] % 2:
                restOddCnt -= 1
                cnt = 0  # 새로운 홀수 만나면 저번 루프 돌았던 값 초기화
            
            while restOddCnt == 0:
                cnt += 1
                restOddCnt += nums[l] % 2
                l += 1
            res += cnt  # 모든 경우의 수 계산해야 하기 때문에 누적 값을 계산해줘야 함

        return res