알고리즘
투 포인터 알고리즘
kwonpinky
2023. 5. 7. 15:22
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