728x90
๐ section05 - 4 - ์ฐ์ ๋ถ๋ถ์์ด2
์ฐ์ ๋ถ๋ถ์์ด1๋ณด๋ค ์ฝ๊ฐ ๋ ์ด๋ ค์ด ๋ฌธ์ ์๋ค. ์ด์ ๋ฌธ์ ๋ ๋ค์ rt
ํฌ์ธํฐ๊ฐ ๊ธฐ์ค๋ณด๋ค ์ปค์ง๋ฉด arr[lt++]
์ฒ๋ฆฌ๋ฅผ ํด์คฌ๋๋ฐ, ์ด ๋ฌธ์ ๋ ํน์ ๊ธฐ์ค ๊ฐ ์ดํ์ธ ๊ฒฝ์ฐ ์๋ก์ด ์ซ์๊ฐ ํฌํจ๋ ์ฐ์ ๋ถ๋ถ ์์ด์ ๊ตฌํด์ฃผ๋ฉด ๋๋ค. ๊ทธ๋ผ ์ด์ ์ซ์๋ ์ ๊ตฌํ๋์ง ๊ถ๊ธํ ์ ์๋๋ฐ, ์ด์ ์ซ์๊ฐ ๋์ ์์ผ๋ฉด์ ์ฐ์ ์์ด์ธ ๊ฐ์ ์ด์ ๊ณผ์ ์์ ๊ตฌํ๊ธฐ ๋๋ฌธ์, ์๋ก์ด ๊ฒฝ์ฐ์ ์๋ง ๋์ ํด์ฃผ๋ฉด ๋๋ค.
- ๋ฐ๋ณต๋ฌธ์ ๋ฐ๋ผ
sum+=arr[rt]
๋ฅผ ๋์ ํ๋ค. - ๋ง์ฝ,
sum>target
์ด๋ฉดsum<=target
์ด ๋ ๋๊น์งsum
์ ๋นผ์ค๋ค.(lt
) - ๋ง์ง๋ง์ ๋ถ๋ถ ์์ด์ด ๋ช ๊ฐ ์๋์ง ๊ณ์ฐํด์ฃผ๋ฉด ๋๋ค. (๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ ๋๋
rt-lt+1
์ ํด์ฃผ๋ฉด ๋๋ค.)
728x90
let n = 5;
let target = 5;
let arr = [1, 3, 1, 2, 3];
console.log(solution(n, target, arr));
function solution(n, target, arr) {
let lt = sum = ans = 0;
for (let rt = 0; rt < n; rt++) {
sum += arr[rt];
while (sum > target) {
sum -= arr[lt++];
}
ans += rt - lt + 1;
}
return ans;
}
๋ฐ์ํ
๋๊ธ