문제 이해

입력

출력

요구 사항


문제 풀이

  1. 슬라이딩 윈도우
class Solution(object):
    def minSubArrayLen(self, target, nums):
        # target 보다 같거나 큰 서브 어레이의 최소 길이
        if len(nums) == 0:
            return 0

        l, total, min_len = 0, 0, float('inf')

        for r in range(len(nums)):
		        # loop가 갱신되면 누적합에 nums[r]을 추가해 줌
            total += nums[r]
            
						# total이 traget보다 커질 수 있는 최소 범위 찾기
						# 조건을 만족하면, l += 1해서 범위를 좁혀준다 -> 즉 부분 배열의 길이 축소
            while total >= target:
                min_len = min(min_len, r-l+1)
                total -= nums[l]
                l += 1
                
        return min_len if min_len != float('inf') else 0