ex) let list = [1,3,2,1,1,5,1,1]
let n = 8
let result = 3
나의 풀이
let list = [1,3,2,1,1,5,1,1]
let n = 8
let result = 0;
for(let i = 0; i < list.length; i++){
let sum = list[i]; // 총합의 첫 기준점을 list[i]로 잡음
for(let j = i+1; j < list.length; j++){ // i 다음 수부터 차례로 더해주기 위해 이중 for문
sum = sum + list[j]
if(sum > n) {
break; // sum 이 n을 넘으면 break 하여 다음 수로 넘기기
}else if(sum === n){
result++;
break;
}
}
}
//result = 3
효율적인 풀이
let list = [1,3,2,1,1,5,1,1]
let n = 8
let t = 0;
let result = 0;
let sum = 0;
for(let i = 0; i < list.length; i++){
sum = sum + list[i]
if(sum === n) result++;
if(sum >= n){
sum = sum - list[t++]
if(sum === n) result++;
}
}
//result = 3
두번째 풀이는 for를 한번만 사용하기 때문에 시간 복잡도가 훨씬 줄어드는 것을 알 수 있다.
for 문을 좀 더 줄이는 방향으로...