ํฐ์คํ ๋ฆฌ ๋ทฐ
[๋ฌธ์ ]
https://www.acmicpc.net/problem/1806
[ํ์ด]
์์ด์ ๋ถ๋ถํฉ์ ๊ตฌํ๋ ๋ฌธ์ ๋ก ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ์ฌ ํ์ดํ์์ต๋๋ค.
์์ 1๊ณผ ๊ฐ์ด ๊ธธ์ด๊ฐ N(10)์ธ ์์ด [ 5, 1, 3, 5, 10, 7, 4, 9, 2, 8 ]์ด ์์ ๋,
์๋์ ๊ฐ์ด start = 0 , end = 0, sum = 5 ๋ก ํฌํฌ์ธํฐ ํ์์ ์์ํฉ๋๋ค.
5 <- start | 1 <- end | 3 | 5 | 10 | 7 | 4 | 9 | 2 | 8 |
๋ง์ฝ sum์ด S(15)๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค๋ฉด end++์ ํด์ฃผ์ด sum์ ์์ด[end]๊ฐ์ ๋ํด sum ํฌ๊ธฐ๋ฅผ ํค์์ค๋๋ค.
๋ง์ฝ sum์ด S(15)๋ณด๋ค ํฌ๋ค๋ฉด, ์์ด[start]๊ฐ์ sum์์ ๋นผ์ฃผ์ด sum์ ์๊ฒ ๋ง๋ค๊ณ start++๋ฅผ ํฉ๋๋ค.
๋ฐ๋ผ์ 5 <= 15 ์ด๋ฏ๋ก end + 1์ธ ์์ด[1]์ 1์ ๋ฐ๋ผ๋ณด๊ฒ ๋๊ณ sum์ 6์ด ๋ฉ๋๋ค.
์ด๋ฐ์์ผ๋ก start์ end๊ฐ์ด N ๋ณด๋ค ์์ ๋๊น์ง(์์ด์ ๋ง์ง๋ง๊น์ง) ๊ฐฑ์ ํ๋ฉฐ ๋ง์ฝ sum์ด S๋ณด๋ค ํฐ ๊ฒฝ์ฐ end - start + 1์ ํตํด ๋ช๊ฐ์ ์ซ์๊ฐ ์ฐ์๋์ด ์๋์ง ๊ตฌํด min์ ๊ฐฑ์ ํ์ฌ ์ค๋๋ค.
ํ์ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
start: 0 end: 0 sum: 5
start: 0 end: 1 sum: 6
start: 0 end: 2 sum: 9
start: 0 end: 3 sum: 14
start: 0 end: 4 sum: 24 => 15๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ธฐ ๋๋ฌธ์ 4 - 0 + 1 = 5 => min = 5๋ก ๊ฐฑ์
start: 1 end: 4 sum: 19 => min = 4๋ก ๊ฐฑ์
start: 2 end: 4 sum: 18 => min = 3๋ก ๊ฐฑ์
start: 3 end: 4 sum: 15 => min = 2๋ก ๊ฐฑ์
start: 3 end: 5 sum: 22 => 3์ ๊ธฐ์กด min 2๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ ๊ฐฑ์ X
start: 4 end: 5 sum: 17 => 2๋ ๊ธฐ์กด min๊ณผ ๊ฐ์์ ๊ฐฑ์ X
start: 5 end: 5 sum: 7
start: 5 end: 6 sum: 11
start: 5 end: 7 sum: 20 => 3์ ๊ธฐ์กด min๋ณด๋ค ์ปค์ ๊ฐฑ์ X
start: 6 end: 7 sum: 13
start: 6 end: 8 sum: 15 => 3 ๊ฐฑ์ X
start: 6 end: 9 sum: 23 => 4 ๊ฐฑ์ X
start: 7 end: 9 sum: 19 => 3 ๊ฐฑ์ X
start: 8 end: 9 sum: 10
๋ฐ๋ผ์ ์ฐ์๋ ์ต์ ๊ฐ์์ธ min ์ 2๊ฐ ๋ฉ๋๋ค.
[์ฝ๋]
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split('\n');
const [N, S] = input[0].split(" ").map(Number);
const numArr = input[1].split(" ").map(Number);
let start = 0;
let end = 0;
let min = Number.MAX_VALUE;
let sum = numArr[0];
while(start < N && end < N) {
if(sum >= S) {
if(min > end - start + 1) {
min = end - start + 1;
}
}
if(sum <= S) {
end++;
sum += numArr[end];
} else {
sum -= numArr[start];
start++;
}
}
min === Number.MAX_VALUE ? console.log(0) : console.log(min);
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ๋ฐฑ์ค 13549๋ฒ - ์จ๋ฐ๊ผญ์ง 3 (0) | 2022.08.05 |
---|---|
[JavaScript] ๋ฐฑ์ค 2457๋ฒ - ๊ณต์ฃผ๋์ ์ ์ (0) | 2022.08.04 |
[Java] ๋ฐฑ์ค 5214๋ฒ - ํ์น (0) | 2022.07.18 |
[Java] ๋ฐฑ์ค 2011๋ฒ - ์ํธ์ฝ๋ (0) | 2022.07.17 |
[Java] ๋ฐฑ์ค 16500๋ฒ - ๋ฌธ์์ด ํ๋ณ (0) | 2022.07.15 |
- Total
- Today
- Yesterday
- ์๋ฐ์คํฌ๋ฆฝํธ
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ๋ฐฑ์ค node.js
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- map
- ํ๋กํผํฐ
- ์ฝ๋ฉํ ์คํธ
- ์ด์์ฒด์
- ๋คํธ์ํฌ
- ๋ฐฑ์ค
- ๋์์ธ ํจํด
- ๋ ์์ปฌ ํ๊ฒฝ
- ๋ฐฑ์ค javascript
- ์๋ฐ
- ์ ์ญ ๋ณ์
- ํ๋กํ ์ฝ
- ํฌํฌ์ธํฐ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ์นด์นด์ค ์ธํด
- http
- TDD
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ด๋ถํ์
- git
- Baekjoon
- ์๊ณ ๋ฆฌ์ฆ
- JavaScript
- fp
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |