๐ก์ ๊ทผ ๋ฐฉ์
ํฌํฌ์ธํฐ
์์ ํฌ์ธํฐ์ ๋ ํฌ์ธํฐ ๋ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ฒ์๋ฅผ ๋ํ๋๊ฐ๋๋ค.
ํฌ์ธํฐ ์ฌ์ด์ ๋ชจ๋ ์์์ ํฉ์ด k์ดํ๋ฉด ๋ ํฌ์ธํฐ ๊ฐ์ ๋๋ฆฌ๊ณ
k์ด๊ณผ๋ฉด ์์ ํฌ์ธํฐ ๊ฐ์ ๋๋ฆฌ๊ธฐ
function solution(sequence, k) {
//ํฌํฌ์ธํฐ
//์์ ํฌ์ธํฐ์ ๋ ํฌ์ธํฐ ๋ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ฒ์๋ฅผ ๋ํ๋๊ฐ๋๋ค.
//ํฌ์ธํฐ ์ฌ์ด์ ๋ชจ๋ ์์์ ํฉ์ด k์ดํ๋ฉด ๋ ํฌ์ธํฐ ๊ฐ์ ๋๋ฆฌ๊ณ
//k์ด๊ณผ๋ฉด ์์ ํฌ์ธํฐ ๊ฐ์ ๋๋ฆฌ๊ธฐ
let start = 0;
let end = 0;
let sum = sequence[0];
let range = [-Infinity, Infinity];
//๋ ํฌ์ธํฐ๊ฐ ๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ํ์ถ = sum์ด k๋ณด๋ค ์๊ธฐ ๋๋ฌธ์
while (end < sequence.length) {
//start ํฌ์ธํฐ๊ฐ end๋ณด๋ค ์ปค์ง๋ฉด end ํฌ์ธํฐ๋ฅผ ์
๋ฐ์ดํธ
if (start > end) end = start;
//sum์ด k์ ๊ฐ๊ณ ํ์ฌ ํฌ์ธํฐ์ range๊ฐ ์ ์ฅ๋์ด ์๋ range๋ณด๋ค ์์ผ๋ฉด ์
๋ฐ์ดํธ
if (sum === k) {
const prev_range = range[1] - range[0];
const current_range = end - start;
if (current_range < prev_range) range = [start, end];
}
//sum์ด k์ด์์ด๋ฉด end ํฌ์ธํฐ +1
if (sum <= k) {
sum += sequence[++end];
} else {
//sum์ด k๋ณด๋ค ํฌ๋ฉด start ํฌ์ธํฐ+1
sum -= sequence[start++];
}
}
return range;
}
https://school.programmers.co.kr/learn/courses/30/lessons/178870
'๐ง ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์์์ฐพ๊ธฐ JS (0) | 2023.12.27 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ๊ฒฝ๋ก JS (1) | 2023.12.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๊ฒ ๋๋ฒ JS (1) | 2023.12.27 |
[ํ๋ก๊ทธ๋๋จธ์ค]๋ ์ ์ฌ์ด์ ์ ์ ์ JS (0) | 2023.12.27 |
[ํ๋ก๊ทธ๋๋จธ์ค]์๊ฒฉ์์คํ JS ํ์ด (0) | 2023.12.27 |