ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
ํ์์ ์๋น ๋ ์ ๊ณผ์ ์ ์ด์ํฉ๋๋ค. ํ์ ์๋น ๋ ํ์์๊ฒ 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_์ฌ๋ผ์ด๋ฉ ์๋์ฐ
๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง ๋ฐฐ์ด [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));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํด์ฌ]์๋๊ทธ๋จ (0) | 2021.07.08 |
---|---|
[ํด์ฌ]ํ๊ธ ํ์ฅ (0) | 2021.07.07 |
[ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ] ์ฐ์ ๋ถ๋ถ ์์ด(2) (0) | 2021.07.05 |
[ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ]์ฐ์ ๋ถ๋ถ ์์ด(1) (0) | 2021.07.03 |
[ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ]๊ณตํต์์ ๊ตฌํ๊ธฐ (0) | 2021.07.02 |