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; }
๋ฐ์ํ
๋๊ธ