코드 흐름
- 투포인터 알고리즘을 사용하였다.
- 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;
}
}
'Algorithm & Data Structures > Programers' 카테고리의 다른 글
Lv 2. 시소 짝궁 (0) | 2024.08.08 |
---|---|
Lv 2. 마법의 엘리베이터 (1) | 2024.08.06 |
Lv 2. 큰 수 만들기 (0) | 2024.08.03 |
Lv 2. 두 큐 합 같게 만들기 (1) | 2024.08.02 |
Lv 2. 삼각달팽이 (1) | 2024.07.31 |