ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

ํ˜„์ˆ˜์˜ ์•„๋น ๋Š” ์ œ๊ณผ์ ์„ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์ˆ˜ ์•„๋น ๋Š” ํ˜„์ˆ˜์—๊ฒŒ N์ผ ๋™์•ˆ์˜ ๋งค์ถœ๊ธฐ๋ก์„ ์ฃผ๊ณ  ์—ฐ์†๋œ k์ผ ๋™์•ˆ์˜ ์ตœ๋Œ€ ๋งค์ถœ์•ก์ด ์–ผ๋งˆ์ธ์ง€๊ตฌํ•˜๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.๋งŒ์•ฝ N=10์ด๊ณ  10์ผ ๊ฐ„์˜ ๋งค์ถœ ๊ธฐ๋ก์ด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋•Œ K=3์ด๋ฉด

12 15 11 20 25 10 20 19 13 15

์—ฐ์†๋œ 3์ผ๊ฐ„์˜ ์ตœ๋Œ€ ๋งค์ถœ์•ก์€ 56๋งŒ์›(11+20+25) ์ž…๋‹ˆ๋‹ค.

 

๋ฌธ์ œํ’€์ด

K์ผ ๋™์•ˆ์˜ ์ตœ๋Œ€ ๋งค์ถœ์•ก์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํˆฌํฌ์ธํ„ฐ lt์™€ rt๊ฐ€ ๊ฐ๊ฐ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ธ๋ฑ์Šค ๊ฐ„์— ์ฐจ์ด์˜ ๊ฐ’(0์ผ~k์ผ๊นŒ์ง€)์ด K๊ฐ€ ๋  ๊ฒฝ์šฐ ํ˜„์žฌ ์ตœ๋Œ€ ๋งค์ถœ์•ก์„ ๋น„๊ตํ•ด ์ฃผ์—ˆ๋‹ค.

 

K๊ฐ’์ด ๋˜์—ˆ์„ ๋•Œ ํฌ์ธํ„ฐ rt๋ฅผ ๋” ์ด๋™์‹œ์ผœ๋„ K์ผ์„ ๋„˜์–ด์„œ ์ตœ๋Œ€ ๋งค์ถœ์•ก์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋ฌธ์ œ์˜ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๋ถ€ํ•ฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— K๊ฐ’๋ณด๋‹ค ์ž‘์•„์ง€๋„๋ก ํฌ์ธํ„ฐ lt๋ฅผ ์ด๋™์‹œ์ผœ ์ค€๋‹ค.

 

์ดํ›„ ํฌ์ธํ„ฐ rt๊ฐ€ ๋‹ค์‹œ ๋‹ค์Œ ์ธ๋ฑ์Šค ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๊ฐ„์— ์ฐจ์ด์˜ ๊ฐ’์ด K๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ์ตœ๋Œ€ ๋งค์ถœ์•ก์„ ๋น„๊ตํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ”๋“œ

function solution(arr) {
  let answer = Number.MIN_SAFE_INTEGER;
  let lt = 0;
  let sum = 0;

  for(let rt = 0; rt < arr.length; rt++) {
    sum += arr[rt];
    if(rt - lt + 1 === 3) {
      answer = Math.max(answer, sum);
      sum -= arr[lt++];
    }
  }
  
  return answer;
}

let arr = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
console.log(solution(arr));

 

๋ฌธ์ œํ’€์ด2_์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ(Sliding Window) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ์˜ ์ผ์ • ๋ฒ”์œ„์˜ ๊ฐ’์„ ๋น„๊ตํ• ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•˜๋‹ค.

 

๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด [12, 15, 11, 20, 25, 10, 30]์—์„œ ๊ธธ์ด(K)๊ฐ€ 3์ธ ์„œ๋ธŒ๋ฐฐ์—ด์˜ ํ•ฉ๊ณ„๊ฐ€ ๊ฐ€์žฅ ํฐ ์„œ๋ธŒ๋ฐฐ์—ด์„ํ†ตํ•ด ์ตœ๋Œ€ ๋งค์ถœ์•ก์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์„œ๋ธŒ๋ฐฐ์—ด์€ K๋งŒํผ ๊ธธ์ด๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ  ๋‹ค์Œ ์ธ๋ฑ์Šค๋กœ ํ•˜๋‚˜์”ฉ ์ด๋™ํ•˜๊ฒŒ ๋˜๋ฉด ์ด์ „์— ์ฐธ์กฐํ–ˆ๋˜ ์ธ๋ฑ์Šค ์š”์†Œ ์ค‘ ๊ฐ€์žฅ ์ฒ˜์Œ์—์ ์žฌ๋˜์–ด ์žˆ๋Š” ์ธ๋ฑ์Šค ์š”์†Œ๋Š” ๊ฐ์‚ฐํ•ด์ฃผ๊ณ  ์ดํ›„์— ์ƒˆ๋กญ๊ฒŒ ์ฐธ์กฐ๋˜๋Š” ์ธ๋ฑ์Šค ์š”์†Œ๋Š” ๊ฐ€์‚ฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์ฝ”๋“œ

function solution(k, arr) {
  let answer = 0;
  let sum = 0;
  for(let i = 0; i < k; i++) sum += arr[i];
  answer = sum;
  for(let i = k; i < arr.length; i++) {
    sum += (arr[i] - arr[i - k]);
    answer = Math.max(answer, sum);
  }
  
  return answer;
}

let arr = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
console.log(solution(3, arr));

 

 

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
๊ธ€ ๋ณด๊ด€ํ•จ