Java

[프로그래머스] 연속된 부분 수열의 합

프로버티기 2025. 3. 26. 15:45

문제

https://school.programmers.co.kr/learn/courses/30/lessons/178870

 

 

 


아이디어

 

슬라이딩 윈도우 

인덱스 주의 

 

코드 

 

class Solution {
    public int[] solution(int[] sequence, int k) {
        int[] answer = {-1, -1};
        int N = sequence.length;
        int sum = sequence[0];
        int min = Integer.MAX_VALUE;
        int left = 0, right = 0;
        while(right < N) {
            if(sum == k) {
                if(min > right - left + 1) {
                    min = right - left + 1;
                    answer[0] = left;
                    answer[1] = right;
                }
                sum -= sequence[left];
                left ++;
            } else if(sum > k) {
                sum -= sequence[left];
                left++;
            } else { // sum < k
                if (++right < sequence.length) { // index out of range 예외  처리 
                    sum += sequence[right];
                }
            }
        }
        return answer;
    }
}

'Java' 카테고리의 다른 글

[코드트리] 경험치를 빠르게 얻기  (0) 2025.03.29
[백준] 1162 : 도로포장  (0) 2025.03.27
[프로그래머스] 징검다리 건너기  (0) 2025.03.25
[백준] 퇴사2  (0) 2025.03.24
[백준] 2011 : 암호코드  (0) 2025.03.24