코딩테스트/JavaScript
[코딩테스트] 연속 부분수열 2
CODE_PLAN
2023. 12. 31. 18:22
나의 풀이
function solution(m, arr) {
let answer = 0, lt = 0, sum = 0;
for (let lt = 0; lt < arr.length; lt++) {
if (arr[lt] <= m) answer++;
}
for (let rt = 0; rt < arr.length; rt++) {
sum += arr[rt];
console.log('sum=?' + sum)
if (sum <= m) answer++;
while (sum > m) {
sum -= arr[lt++];
if (sum <= m) answer++;
}
}
return answer;
}
// 1, 3 ,1 // 1 3, 3 1 // 1 1
let a = [1, 3, 1];
console.log(solution(5, a));
</script>
나는 위와같이 풀었는데 위와같이 풀어도 코드가 잘 돌아가는것을 확인할수있다.
모범 답안
function solution(m, arr){
let answer=0, sum=0, lt=0;
for(let rt=0; rt<arr.length; rt++){
sum+=arr[rt];
while(sum>m){
sum-=arr[lt++];
}
answer+=(rt-lt+1);
}
return answer;
}
let a=[1, 3, 1, 2, 3];
console.log(solution(5, a));
핵심 포인트1) answer += (rt-lt+1); 를 작성하는것이 핵심 ( 하나부터 경우의수를 3개만 작성해도 규칙을 알수있다)
2) while 문안에서 특정 조건동안 계속 반복되게 사용