728x90
๋ฐ์ํ
๐ 04 - ์ฐ์ ๋ถ๋ถ์์ด 2(ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ)
N๊ฐ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ง๋ค. ์ด ์์ด์์ ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ด ํน์ ์ซ์ M์ดํ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ช ๋ฒ ์๋์ง ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
๋์ ํ์ด ๋ฐฉ๋ฒ
- for ๋ฌธ์ ์ฐจ๋ก๋๋ก ๋๋ฉฐ ํฌ์ธํฐ rt์ ์์น๋ฅผ ์ด๋์ํจ๋ค.
- ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ์ sum์ ๋์ ์์ผ์ค๋ค.
- sum์ด m๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ answer++์ ํด์ค๋ค.
- ํฌ์ธํฐ rt๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ์ด m ์ดํ์ด๊ณ sum๊ณผ ๊ฐ์ง ์๋ค๋ฉด answer++์ ํด์ค๋ค. ํฌ์ธํฐ rt๊ฐ 1์ฉ ์ฆ๊ฐํ ๋๋ง๋ค ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ์ด ํน์ ์ซ์ M์ดํ๊ฐ ๋๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ ๊ณผ์ ์์ sum์ด m๋ณด๋ค ํฌ๊ณ ๊ฐ์์ง ๊ฒฝ์ฐ ํฌ์ธํฐ lt๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ์ sum์์ ๋นผ์ค๋ค.
- sum์ด m ์ดํ์ด๊ณ ํฌ์ธํฐ rt๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ๊ณผ ๊ฐ์ง ์๋ค๋ฉด answer++์ ํด์ค๋ค. ํฌ์ธํฐ rt๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ๊ณผ ๊ฐ์ง ์์์ผ ํ๋ค๋ ์กฐ๊ฑด์ ์ค ์ด์ ๋ ์์์ ์ด๋ฏธ ํด๋น ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ์คฌ๊ธฐ ๋๋ฌธ์ด๋ค.
- for ๋ฌธ์ด ๋๋๋ฉด answer์ return ํด์ค๋ค.
๐ ๊ฐ์ฌ๋ ํ์ด ๋ฐฉ๋ฒ
- for ๋ฌธ์ ์ฐจ๋ก๋๋ก ๋๋ฉฐ ํฌ์ธํฐ rt์ ์์น๋ฅผ ์ด๋์ํจ๋ค.
- sum์ ํฌ์ธํฐ rt๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ์ sum์ ๋์ ์์ผ์ค๋ค.
- ํฌ์ธํฐ rt๋ฅผ 1์ฉ ์ฆ๊ฐ์ํฌ๋ ๋ง๋ค answer์ ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ด ํน์ ์ซ์ M์ดํ๊ฐ ๋๋ ๊ฒฝ์ฐ์ ์(rt - lt + 1)๋ฅผ ๋ํ๋ค.
- ๋จ, sum์ด m๋ณด๋ค ํด ๊ฒฝ์ฐ ํฌ์ธํฐ lt๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฐ์ sum์์ ๋นผ์ค๋ค.
- for ๋ฌธ์ด ๋๋๋ฉด answer์ return ํด์ค๋ค.
๐ ํ์ด
// ๋์ ํ์ด ๋ฐฉ๋ฒ
function solution(m, arr) {
let answer = 0,
sum = 0,
lt = 0;
for (let rt = 0; rt < arr.length; rt++) {
sum += arr[rt];
if (sum <= m) answer++;
if (arr[rt] <= m && sum !== arr[rt]) answer++;
while (sum >= m) {
sum -= arr[lt++];
if (sum <= m && sum !== arr[rt]) answer++;
}
}
return answer;
}
let a = [1, 3, 1, 2, 3];
console.log(solution(5, a));
// ๊ฐ์ฌ๋ ํ์ด ๋ฐฉ๋ฒ
function solution(m, arr) {
let answer = 0,
sum = 0,
lt = 0;
for (let rt = 0; rt < arr.length; rt++) {
sum += arr[rt];
while (sum > m) {
sum -= arr[lt++];
}
answer += rt - lt + 1;
}
return answer;
}
let a = [1, 3, 1, 2, 3];
console.log(solution(5, a));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 5] 06 - ํ๊ธ ํ์ฅ (0) | 2022.09.21 |
---|---|
[JavaScript/section 5] 05 - ์ต๋ ๋งค์ถ (0) | 2022.09.20 |
[JavaScript/section 5] 03 - ์ฐ์ ๋ถ๋ถ ์์ด 1 (0) | 2022.09.19 |
[JavaScript/section 5] 02 - ๊ณตํต์์ ๊ตฌํ๊ธฐ (0) | 2022.09.18 |
[JavaScript/section 5] 01 - ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ (0) | 2022.09.17 |