수열을 나타내는 정수 배열 sequence와 부분 수열의 합을 나타내는 정수 k가 매개변수로 주어질 때, 조건을 만족하는 부분 수열의 시작 인덱스와 마지막 인덱스를 배열로 return하는 solution 함수를 작성하는 문제이다.
투포인터를 사용하는 것은 쉽게 알아차렸지만, 반복문과 조건문을 설정하는 부분에서 헤매었다. 연습이 더 필요할 것 같다.
class Solution {
public int[] solution(int[] sequence, int k) {
int[] answer = new int[2];
int sum = 0;
int start = 0, end = 0;
int len = -1;
for (; start < sequence.length; start++) {
while(end < sequence.length && sum < k) {
sum += sequence[end++];
}
if (sum == k) {
if (len == -1 || len > end - start) {
answer[0] = start;
answer[1] = end-1;
len = end - start;
}
}
sum -= sequence[start];
}
return answer;
}
}