const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const arr = fs.readFileSync(filePath).toString().trim().split("\n");
const [n, x] = arr[0].split(" ").map(Number);
const visit = arr[1].split(" ").map(Number);
let cnt = (max = 0);
let sum = new Array(n + 2).fill(0);
sum[0] = 0; // ex x가 2일때, sum[2]-sum[0] = sum[2] 여야하니까..
for (let i = 0; i < n; i++) { // 누적 합
sum[i + 1] = visit[i] + sum[i]; //
}
for (let i = 0; i <= n - x; i++) {
let sumx = sum[i + x] - sum[i]; // x일 동안 합
if (max < sumx) { // 현재 max보다 sumx가 크면
max = sumx; // max 갱신하고
cnt = 1; // cnt도 처음부터
} else if (max === sumx) { // 같으면
cnt++;
}
}
if (max === 0) {
console.log("SAD");
} else {
console.log(max);
console.log(cnt);
}
처음에 누적합을 사용하지 않아서 시간초과가 났었다. 무작정 풀기보단 더 효율적인 방법을 생각해보고 푸는 습관을 가져야겠다.