코딩테스트/JS 알고리즘 문제(JS)
연속 부분수열2
판다꼬마
2023. 1. 13. 18:48
728x90
문제
입력
- 첫째 줄에 N(1≤N≤100,000), M(1≤M≤100,000,000)이 주어진다. 수열의 원소값은 1,000을 넘지 않는 자연수이다.
출력
첫째 줄에 경우의 수를 출력한다.
입력 예시
5 5
1 3 1 2 3
출력 예시
10
풀이 방법
내 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
const sol= (n,a) =>{
let sum=0;
let answer=0;
let lt=0;
for (let rt=0; rt<a.length; rt++){
sum+=a[rt];
console.log(sum)
while(sum>n) {
sum -= a[lt++]
}
answer+=(rt-lt+1)
}
return answer
}
let a=[1, 3, 1, 2, 3];
console.log(sol(5, a));
</script>
</body>
</html>
Solution
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<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));
</script>
</body>
</html>
느낌점
728x90