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

๋ฌธ์ œ

N๊ฐœ์˜ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.์ด ์ˆ˜์—ด์—์„œ ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ์ด ํŠน์ •์ˆซ์ž M์ดํ•˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ช‡ ๋ฒˆ ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.๋งŒ์•ฝ N=5, M=5์ด๊ณ  ์ˆ˜์—ด์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด

1 3 1 2 3

ํ•ฉ์ด 5์ดํ•˜๊ฐ€ ๋˜๋Š” ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์€ {1}, {3}, {1}, {2}, {3}, {1, 3}, {3, 1}, {1, 2} , {2, 3}, {1, 3, 1}๋กœ ์ด 10๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค.

 

๋ฌธ์ œํ’€์ด

 ํˆฌํฌ์ธํ„ฐ lt์™€ rt๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•œ ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ์„ ๊ตฌํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ์ด M์˜ ๊ฐ’๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ํด ๋•Œ๊นŒ์ง€ ํฌ์ธํ„ฐ rt๋ฅผ ์ด๋™์‹œ์ผœ ์ฃผ๋ฉฐ ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ์ด M์˜ ๊ฐ’๋ณด๋‹ค ์ปค์งˆ ๊ฒฝ์šฐ์—๋Š”ํ•ด๋‹น ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ์ด M์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์•„์งˆ ๋•Œ๊นŒ์ง€(M์ดํ•˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค) lt๋ฅผ ์ด๋™์‹œ์ผœ ์ฃผ๋ฉฐ ํ•ด๋‹น ์š”์†Œ๋“ค์„๊ฐ์‚ฐํ•ด์ค€๋‹ค.

 

์ด๋•Œ ์กฐ๊ฑด ์ƒ ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ์ด M๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์„ ๊ฒฝ์šฐ ํ•ด๋‹น ํฌ์ธํ„ฐ๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์š”์†Œ๋Š” ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ๋ชจ๋“  ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์˜

๋งจ ๋ ์›์†Œ์— ๋ฐ˜๋“œ์‹œ ํฌํ•จ๋œ๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด rt๊ฐ€ ์š”์†Œ 1์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ํ•ด๋‹น ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ์ด M๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์„ ๊ฒฝ์šฐ ๊ทธ ๊ฒฝ์šฐ๊ฐ€ ๋˜๋Š”

๊ฒฝ์šฐ์˜ ์ˆ˜์—๋Š” ๋ฐ˜๋“œ์‹œ 1์ด ํฌํ•จ๋œ๋‹ค. 

๋งŒ์•ฝ ๊ทธ ๊ฐ’์ด 5์ผ ๊ฒฝ์šฐ(M์˜ ์ตœ๋Œ“๊ฐ’)์—๋Š” 5๋ฅผ ํฌํ•จํ•œ ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์— ๋Œ€ํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” { 5 }, ์ด 1๊ฐ€์ง€์ด๋‹ค

์ด๋•Œ 1์„ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•˜๋Š” ์—ฐ์†๋ถ€๋ถ„์ˆ˜์—ด์— ๋Œ€ํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

rt_Num(์ธ๋ฑ์Šค) - lt_Num(์ธ๋ฑ์Šค)+1

 

์ฝ”๋“œ

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

  for(let rt = 0; rt < arr.length; rt++) {
    let num = (rt - lt) + 1;
    sum += arr[rt];
    if(sum <= 5) answer += num;
    while(sum > 0) {
      sum -= arr[lt++];
      if(sum <= 5) answer += num;
    }
  }
  return answer;
}

let arr = [1, 3, 1, 2, 3]
console.log(solution(arr));

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

  for(let rt = 0; rt < arr.length; rt++) {
    sum += arr[rt];
    while(sum > 5) 
	/* sum >= 5์ผ ๊ฒฝ์šฐ๋กœ ํ•œ๋‹ค๋ฉด ํฌ์ธํ„ฐ rt๋กœ ์ฐธ์กฐํ•ด์„œ ๊ตฌํ•œ ์—ฐ์†๋ถ€๋ถ€์ˆ˜์—ด์— ๋Œ€ํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜์™€ 
       ๋™์ผํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํฌ์ธํ„ฐ lt๊ฐ€ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜์–ด ์ค‘์ฒฉ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. */
    {
      sum -= arr[lt++];
    }
    answer += rt - lt + 1;
  }
  return answer;
}

let arr = [1, 3, 1, 2, 3]
console.log(solution(arr));

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ