[백준] 1806. 부분합
문제 링크
풀이 과정
투 포인터 문제입니다.
문제 [백준] 2003. 수들의 합 2의 풀이 아이디어를 사용했으며, 투 포인터가 가리키는 범위 내의 누적 합이 S 이상이면 그 길이를 갱신하도록 했습니다.
코드
const fs = require("fs");
const stdin = (process.platform === "linux"
? fs.readFileSync("/dev/stdin")
: `10 15
5 1 3 5 10 7 4 9 2 8`
)
.toString()
.trim()
.split("\n");
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
const [N, S] = input().split(" ").map(Number);
const arr = input().split(" ").map(Number);
let left = 0,
right = 0,
sum = 0,
answer = 100001;
while (right <= N) {
if (sum <= S) sum += arr[right++];
else sum -= arr[left++];
if (sum >= S) {
answer = Math.min(answer, right - left);
}
}
console.log(answer == 100001 ? 0 : answer);
댓글남기기