[오늘의 코테연습장] [leetcode] 209. Minimum Size Subarray Sum

Mini_me·2023년 8월 26일
0

공부[코테연습장]

목록 보기
22/36
post-thumbnail

📑문제

https://leetcode.com/problems/minimum-size-subarray-sum/?envType=study-plan-v2&envId=top-interview-150

SubArray의 sum이 주어진 target보다 크거나 같은 SubArray의 최소 길이를 구하세요.
없다면 0을리턴하세요

📑 접근방법

최소 길이의 부분 배열을 찾아내기 위해 '투 포인터(Two Pointer)' 알고리즘을 사용하기로 결정하였습니다.

right가 배열의 끝에 도달할 때까지 반복문을 실행하면서 sum에 right 값을 더하는 방식으로 진행하였습니다.
이렇게 해서 얻은 sum이 타겟보다 크거나 같아질 때까지 left를 이동시키며 최소 길이를 갱신하는 방식으로 접근하였습니다.

만약 sum이 합계보다 작다면 right를 오른쪽 방향으로 증가시켜면서계속해서 이동시키면서 추가적인 값들을 합계에 더했습니다.

마지막으로 모든 반복문을 수행한 후에도 최소 길이가 초기값 그대로라면, 즉 부분 배열을 찾지 못한 경우엔 0을 반환하도록 구현했습니다.

📑 코드

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int left = 0;
        int right = 0; 
        int sum = 0;
        int minLength = nums.length + 1;

        while (right < nums.length) {
            sum += nums[right];

            while (sum >= target) { 
                minLength = Math.min(minLength, right - left + 1); 
                sum -= nums[left]; 
                left++;
            }

            right++;
        }

        return minLength == nums.length + 1 ? 0 : minLength; 
    }
}

0개의 댓글