https://school.programmers.co.kr/learn/courses/30/lessons/178870
투포인터 알고리즘 활용해 풀 수 있는 문제.
class Solution {
public int[] solution(int[] sequence, int k) {
int[] answer = new int[2];
answer[0] = Integer.MAX_VALUE;
answer[1] = Integer.MAX_VALUE;
int length = sequence.length;
int left = 0;
int right = 0;
int sum = 0;
for (right = 0; right < sequence.length; right++) {
sum += sequence[right];
while (sum > k) {
sum -= sequence[left];
left++;
}
if (sum == k) {
if (length > right - left) {
answer[0] = left;
answer[1] = right;
length = right - left;
} else if (length == right - left) {
answer[0] = Math.min(answer[0], left);
answer[1] = Math.min(answer[1], right);
}
}
}
return answer;
}
}
정리가 잘 된 글이네요. 도움이 됐습니다.