입력 받기:
정수 배열 inputs를 생성하여 첫 번째 원소는 행(R), 두 번째 원소는 X의 값을 받습니다.
정수 배열 arr를 생성하여 판매량을 저장한다.
초기화:
arr 배열에서 처음 X일 동안의 판매량 합계를 계산하고, 이 값을 answer와 count에 초기화한다.
판매량 계산:
배열을 순회하면서 현재 일부터 X일까지의 합계를 구하고, 이전까지의 최대 판매량과 비교한다.
새로운 판매량이 이전까지의 최대 판매량보다 크다면, answer와 count를 업데이트한다.
새로운 판매량이 이전까지의 최대 판매량과 같다면, count를 1 증가시킨다.
결과 출력:
최종적으로 answer가 0이면 "SAD"를 출력하고, 그렇지 않으면 answer와 count를 출력한다.
using System.Text;
namespace BOJ
{
class No_21921
{
static void Main()
{
StringBuilder sb = new StringBuilder();
int[] inputs = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
int N = inputs[0];
int X = inputs[1];
var arr = new int[250_001];
string[] s = Console.ReadLine().Split();
for (int i = 0; i < s.Length; i++)
{
arr[i] = int.Parse(s[i]);
}
int sum = 0;
for (int i = 0; i < X; i++)
{
sum += arr[i];
}
int answer = sum;
int count = 1;
for (int i = X; i < N; i++)
{
sum += arr[i] - arr[i - X];
if (answer == sum)
count++;
else if (answer < sum)
{
answer = sum;
count = 1;
}
}
if (answer == 0)
{
sb.AppendLine("SAD");
}
else
{
sb.AppendLine($"{answer}");
sb.AppendLine($"{count}");
}
Console.Write(sb);
}
}
}
누적 합
슬라이딩 윈도우