인프런 커뮤니티 질문&답변
풀이 질문입니다.
작성
·
160
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) 방식입니다.





