Coding Test/Practice
백준 21921번 블로그 JavaScript 풀이 [투포인터]
yunicornlab
2024. 7. 22. 12:40
반응형
백준 21921번 블로그 문제를 자바스크립트로 투포인터 알고리즘을 이용해서 풀어보았다.
https://www.acmicpc.net/problem/21921
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
// 총 일수 N, 계산하고자 하는 기간 X일
let [n, x] = input[0].split(' ').map(Number);
let visitors = input[1].split(' ').map(Number);
// 최대 방문자 수
let maxVisit = 0;
// 최대 방문자 수를 달성한 기간 수
let count = 0;
// 투포인터를 위한 start, end, 현재 방문자수의 합 설정
let start = 0;
let end = start + x - 1;
let sumVisit = 0;
for (let i=start; i<=end; i++) {
sumVisit += visitors[i]
}
while (end < n) {
// 현재 방문자수 < 최대 방문자수 : pass
// 현재 방문자수 = 최대 방문자수 : count++
// 현재 방문자수 > 최대 방문자수 : 최대방문자수 갱신, count = 1
if (maxVisit == sumVisit) count += 1;
else if (maxVisit < sumVisit) {
maxVisit = sumVisit;
count = 1
}
sumVisit -= visitors[start];
start++;
end++;
sumVisit += visitors[end];
}
// 결과 출력
if (maxVisit == 0) console.log("SAD")
else {
console.log(maxVisit)
console.log(count)
}
반응형