์ฐ์ ๋ถ๋ถ์์ด2(ํจ์จ์ฑ-ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ)
๋ฌธ์ (์ถ์ฒ : ์ธํ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ๊ฐ์, ์ ๋ณด์ฌ๋ฆผํผ์๋)
N๊ฐ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ง๋๋ค.์ด ์์ด์์ ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ด ํน์ ์ซ์ M์ดํ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ช ๋ฒ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ ๋จ์ ์์ฑํ์ธ์. ๋ง์ฝ N=5, M=5์ด๊ณ ์์ด์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด 13123 ํฉ์ด 5์ดํ๊ฐ ๋๋ ์ฐ์๋ถ๋ถ์์ด์ {1}, {3}, {1}, {2}, {3}, {1, 3}, {3, 1}, {1, 2}, {2, 3}, {1, 3, 1}๋ก ์ด 10๊ฐ์ง์ ๋๋ค.
โฃ ์
๋ ฅ์ค๋ช
์ฒซ์งธ ์ค์ N(1โคNโค100,000), M(1โคMโค100,000,000)์ด ์ฃผ์ด์ง๋ค. ์์ด์ ์์๊ฐ์ 1,000์ ๋์ง ์๋ ์์ฐ์์ด๋ค.
โฃ ์ถ๋ ฅ์ค๋ช
์ฒซ์งธ ์ค์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
โฃ ์ ๋ ฅ์์ 1
5 5
1 3 1 2 3
โฃ ์ถ๋ ฅ์์ 1
10
Tip

๋ฌธ์ ํ์ด
//๊ฐ์ ๋ฃ๊ณ ๋ด๊ฐ ๋ค์ ์์ฑํ ๋ต
function solution(arr,num){
let answer = 0;
let sum = 0;
let lp = 0;
for(let rp = 0 ; rp < arr.length ; rp++){
sum += arr[rp];
while(sum > num){
sum -= arr[lp++];
}
answer += (rp - lp + 1);
}
return answer;
}
let a=[1, 3, 1, 2, 3];
console.log(solution(a, 5));