Algorithm & Data Structures/Programers
Lv 2. 연속된 부분수열의 합
Geisha
2024. 8. 4. 21:53
코드 흐름
- 투포인터 알고리즘을 사용하였다.
- left, right 를 지정하는 변수를 두고 right를 while 문을 통해서 계속 늘려가면서 sum 이 k를 넘어갈때까지 더한다.
- 이후 left를 더하고 sum에서 left칸의 sequence 원소를 빼면서 sum과 k를 비교한다.
- 문제조건에 맞게 부분수열의 길이가 짧다면 최신화한다.
class Solution {
public int[] solution(int[] sequence, int k) {
int N = sequence.length;
int left=0, right = N-1;
int sum = 0;
for(int i = 0, j = 0 ; i < N ; i++){
while(j < N && sum < k){
sum+= sequence[j];
j++;
}
if(sum == k){
if((right-left)>(j-i))
{
left = i;
right = j-1;
}
}
sum -= sequence[i];
}
int[] answer = {left,right};
return answer;
}
}