728x90
- 리스트에 순차적으로 접근해야 할 떄 두 개의 점의 위치를 기록하면서 처리하는 알고리즘
- 리스트에 담긴 데이터를 순차적으로 접근해야 할 때는 시작점과 끝점 2개의 점으로 접근할 데이터의 범위를 표현할 수 있다.
let n = 8; // 데이터의 개수
let m= 5; // 찾고자 하는 부분합
let data =[3,2,4,1,2,2,1,5] // 전체 수열
let cnt =0;
let intervalSum=0;
let end=0;
//start를 차례대로 증가시키며 반복
for(let start=0;start<n;start++){
//end를 가능한만큼 아동시키기
while(intervalSum<m && end<n){
intervalSum=intervalSum+data[end];
end++
}
//부분합이 m일 때 카운트 증가
if(intervalSum===m) cnt++
intervalSum=intervalSum-data[start];
}
console.log(cnt)
728x90
'알고리즘' 카테고리의 다른 글
DFS(깊이 우선 탐색) (0) | 2023.06.06 |
---|---|
투포인터 슬라이더 문제 풀이(1) (0) | 2023.05.07 |
이진탐색 문제 풀이1 (0) | 2023.05.01 |
3. 파라메트릭 서치 이해하기 (0) | 2023.05.01 |
2. 정렬된 배열에서 특정 원소의 개수 구하기 (0) | 2023.04.30 |