๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ] section05 - 4 - ์—ฐ์† ๋ถ€๋ถ„์ˆ˜์—ด2

by YWTechIT 2021. 8. 27.
728x90

๐Ÿ“ section05 - 4 - ์—ฐ์† ๋ถ€๋ถ„์ˆ˜์—ด2

์—ฐ์† ๋ถ€๋ถ„์ˆ˜์—ด1๋ณด๋‹ค ์•ฝ๊ฐ„ ๋” ์–ด๋ ค์šด ๋ฌธ์ œ์˜€๋‹ค. ์ด์ „ ๋ฌธ์ œ๋Š” ๋‹ค์Œ rt ํฌ์ธํ„ฐ๊ฐ€ ๊ธฐ์ค€๋ณด๋‹ค ์ปค์ง€๋ฉด arr[lt++]์ฒ˜๋ฆฌ๋ฅผ ํ•ด์คฌ๋Š”๋ฐ, ์ด ๋ฌธ์ œ๋Š” ํŠน์ • ๊ธฐ์ค€ ๊ฐ’ ์ดํ•˜์ธ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ์ˆซ์ž๊ฐ€ ํฌํ•จ๋œ ์—ฐ์† ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿผ ์ด์ „ ์ˆซ์ž๋Š” ์•ˆ ๊ตฌํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด์ „ ์ˆซ์ž๊ฐ€ ๋์— ์žˆ์œผ๋ฉด์„œ ์—ฐ์† ์ˆ˜์—ด์ธ ๊ฐ’์€ ์ด์ „ ๊ณผ์ •์—์„œ ๊ตฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ๋กœ์šด ๊ฒฝ์šฐ์˜ ์ˆ˜๋งŒ ๋ˆ„์ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

  1. ๋ฐ˜๋ณต๋ฌธ์„ ๋”ฐ๋ผ sum+=arr[rt]๋ฅผ ๋ˆ„์ ํ•œ๋‹ค.
  2. ๋งŒ์•ฝ, sum>target์ด๋ฉด sum<=target์ด ๋  ๋•Œ๊นŒ์ง€ sum์„ ๋นผ์ค€๋‹ค.(lt)
  3. ๋งˆ์ง€๋ง‰์— ๋ถ€๋ถ„ ์ˆ˜์—ด์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ๊ณ„์‚ฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค. (๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ๋Š” 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;
}

 

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€