728x90
https://www.acmicpc.net/problem/21921
21921번: 블로그
첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다
www.acmicpc.net
[정답코드]
let fs = require("fs");
let input = fs.readFileSync("input.txt").toString().split("\n");
let [n,x]= input[0].split(" ").map(Number)
let arr=[0,...input[1].split(" ").map(Number)]
//n=7
//x=5
//arr=[0,1,1,1,1,1,5,1]
let sum = 0;
for(let i=1;i<=n;i++){
//1부터 x번째 날의 방문자 수의 합
if(i<=x) sum=sum+arr[i]
}
let maxSum=sum; //가장 큰 합
let count=1;//기간의 개수
console.log(sum)//5
// 슬라이딩 윈도우 시작
let left = 1;
let right = x;
while(right+1<=n){//윈도우를 한 칸 오르쪽으로 이동하기
left++
right++
sum=sum+arr[right]-arr[left-1]
if(sum===maxSum) count++
else if(maxSum<sum){
maxSum=sum
count=1
}
}
if(maxSum===0) console.log("SAD")
else{
console.log(maxSum)
console.log(count)
}
728x90
'알고리즘' 카테고리의 다른 글
DFS 문제풀이 (1) | 2023.06.08 |
---|---|
DFS(깊이 우선 탐색) (0) | 2023.06.06 |
투 포인터 알고리즘 (0) | 2023.05.07 |
이진탐색 문제 풀이1 (0) | 2023.05.01 |
3. 파라메트릭 서치 이해하기 (0) | 2023.05.01 |