문제
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 |