[백준] - 21921 블로그 (node.js)

밀루·2025년 1월 23일
0

BOJ

목록 보기
60/82

문제링크

코드

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);
}

처음에 누적합을 사용하지 않아서 시간초과가 났었다. 무작정 풀기보단 더 효율적인 방법을 생각해보고 푸는 습관을 가져야겠다.

profile
이밀루의 도전

0개의 댓글