인프런 커뮤니티 질문&답변

건강한 순록님의 프로필 이미지
건강한 순록

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

3. 연속부분수열1(Two Pointers Algorithm)

풀이 질문입니다.

작성

·

123

0

function solution(m, arr){
let ans = 0;

for(let i=0; i<arr.length; i++) {
let s = m - arr[i];
let p = i+1;

while(p<arr.length) {
if(s-arr[p] === 0) {
ans++;
break;
};

if(s-arr[p] > 0) s -= arr[p++];
if(s-arr[p] < 0) break;
}
}

return ans;
}
let a=[1, 2, 1, 3, 1, 1, 1, 2];
console.log(solution(6, a));

빼고 더하는 식으로 구현하지 않고

연속된다는 점에서 시작점 이후로 +1씩 포인터 크기를 늘렸는데

위와 같이 풀어도 시간복잡도가 같을까요~?

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

영상의 방법은 투포인터스와 슬라이딩 윈도우를 사용한 O(N) 시간복잡도이고, 

위에 코드는 모든 i지점에서   p를 하나하나 증가하면서 계산하는 시간복잡도 O(N^2) 방식입니다.

건강한 순록님의 프로필 이미지
건강한 순록

작성한 질문수

질문하기