728x90
๋ฐ์ํ
๐ 05 - ์ต๋ ๋งค์ถ(์ฌ๋ผ์ด๋ฉ ์๋์ฐ)
ํ์ ์๋น ๋ ํ์์๊ฒ N์ผ ๋์์ ๋งค์ถ๊ธฐ๋ก์ ์ฃผ๊ณ ์ฐ์๋ K์ผ ๋์์ ์ต๋ ๋งค์ถ์ก์ด ์ผ๋ง์ธ์ง ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
๋์ ํ์ด ๋ฐฉ๋ฒ
- ์ด์ค for ๋ฌธ์ ๋๋ฉฐ ์ฒ์๋ถํฐ ์ฐจ๋ก๋๋ก K์ผ ๋์์ ๋งค์ถ์ก์ ๊ตฌํ๋ค.
- answer ๋ณ์์ ์ ์ฅ๋ ๊ฐ๊ณผ sum์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ answer ๋ณ์์ ๋ฃ์ด์ค๋ค.
๐ ๊ฐ์ฌ๋ ํ์ด ๋ฐฉ๋ฒ(์ฌ๋ผ์ด๋ฉ ์๋์ฐ)
๊ณ ์ ์ฌ์ด์ฆ์ ์๋์ฐ๊ฐ ์ฌ๋ผ์ด๋ฉ(์ด๋)ํ๋ฉด์ ์๋์ฐ ๋ด์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ์ดํ๋ ์๊ณ ๋ฆฌ์ฆโโ
์๊ฐ๋ณต์ก๋๊ฐ O(N)์ด๊ธฐ ๋๋ฌธ์ ์ด์ค for ๋ฌธ์ ์ด์ฉํ ๋ฐฉ๋ฒ๋ณด๋ค ํจ์จ์ ์ด๋ค.
- ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๊ฐ๋ถํฐ K ๋ฒ์งธ ์ธ๋ฑ์ค๊น์ง์ ํฉ์ sum์ ์ ์ฅํ๋ค.
- answer ๋ณ์์ sum์ ์ ์ฅ๋ ๊ฐ์ ๋ฃ์ด์ค๋ค.
- ์์ ๊ณผ์ ์ด ๊ณ ์ ์ฌ์ด์ฆ์ ์๋์ฐ๋ฅผ ๋ง๋ค์๋ค๊ณ ํ๋ฉด ์ด์ ์์ผ๋ก ์ญ~์ฑ ๋ฐ๋ฉด์ ์ต๋๊ฐ์ ์ฐพ์ผ๋ฉด ๋๋ค.
- ์๋์ฐ๊ฐ ํ ์นธ ์ด๋ํ๋ฉด sum์ arr[i]๋ฅผ ๋ํ๊ณ arr[i - k]๋ฅผ ๋นผ์ค๋ค. sum์ ํ์ฌ ์๋์ฐ ๋ด์ ์๋ ๋ฐ์ดํฐ์ ํฉ์ด๋ค.
- answer ๋ณ์์ ์ ์ฅ๋ ๊ฐ๊ณผ sum์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ answer ๋ณ์์ ๋ฃ์ด์ค๋ค.
๐ ํ์ด
// ๋์ ํ์ด ๋ฐฉ๋ฒ
function solution(k, arr) {
let answer = Number.MIN_SAFE_INTEGER;
let sum = 0;
for (let i = 0; i < arr.length - 2; i++) {
sum = 0;
let j = i;
for (let s = 0; s < k; s++) {
sum += arr[j++];
}
answer = Math.max(answer, sum);
}
return answer;
}
let a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
console.log(solution(3, a));
// ๊ฐ์ฌ๋ ํ์ด ๋ฐฉ๋ฒ
function solution(k, arr) {
let answer;
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 a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
console.log(solution(3, a));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 5] 07 - ์๋๊ทธ๋จ (0) | 2022.09.21 |
---|---|
[JavaScript/section 5] 06 - ํ๊ธ ํ์ฅ (0) | 2022.09.21 |
[JavaScript/section 5] 04 - ์ฐ์ ๋ถ๋ถ์์ด 2 (0) | 2022.09.19 |
[JavaScript/section 5] 03 - ์ฐ์ ๋ถ๋ถ ์์ด 1 (0) | 2022.09.19 |
[JavaScript/section 5] 02 - ๊ณตํต์์ ๊ตฌํ๊ธฐ (0) | 2022.09.18 |