๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[์ธํ๋ฐ ์น์
5] ์ต๋ ๋งค์ถ (Javascript)
์ ๋ฃ ๊ฐ์์ธ ๊ด๊ณ๋ก ๋ฌธ์ ์ค๋ช
์ ์๋ตํฉ๋๋ค.
โ๏ธIdea Sketch
2021-06-25
1. ์ฐ์ ์ต๋ ๋งค์ถ์ก์?
2. left์ right ๊ฐ์ ๊ฐ๊ฒฉ์ k
let left = 0, right = k-1;
3. left++, right++ํ๋ฉด์ sum ๊ตฌํ๊ธฐ
4. sum์ด max๋ณด๋ค ๋ ํฐ์ง ํ๋จ
let max = Number.MIN_SAFE_INTEGER;
max = sum > max ? sum : min; // ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ
max = Math.max(max, sum); // ๋๋ฒ์งธ ๋ฐฉ๋ฒ
5. ๋ฌธ์ ์ : Math.max(max, sum) ์ NaN ๋ฐํ
- right๋ฅผ ์ ์์ฐ์ฐ์๋ก ๊ณ์ฐํ๊ธฐ ๋๋ฌธ์ ์๊ธฐ๋ ๋ฌธ์
while (right < len) { // len์ด 10, right๊ฐ 9์ผ ๋ ๋ฐ๋ณต๋ฌธ ํต๊ณผ
sum -= arr[left++];
sum += arr[++right]; // right๋ 9+1, arr[10]์ NaN, ๋ฐ๋ผ์ sum์ NaN
max = Math.max(max, sum); // Math.max()๊ฐ NaN ๋ฐํ
}
- ํด๊ฒฐ๋ฐฉ๋ฒ : ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃ์กฐ๊ฑด ์์
while (right < len-1) {
sum -= arr[left++];
sum += arr[++right];
max = Math.max(max, sum);
}
โ๏ธ์์ค์ฝ๋
2021-06-25
function solution(arr, k) {
let left = 0, right = k-1;
let sum = 0;
for (let i=0; i<k; i++) sum += arr[i];
let max = sum;
while (right < arr.length) {
sum -= arr[left++];
sum += arr[++right];
max = sum > max ? sum : max;
}
return max;
}