본문 바로가기
알고리즘/백준 BOJ

[ BOJ/C# ] 21921 블로그

by 왹져박사 2023. 8. 29.

https://www.acmicpc.net/problem/21921

 

21921번: 블로그

첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다

www.acmicpc.net

누적합들을 슬라이딩 윈도우 개념을 이용하여 구하고 비교하는 문제였다. 

이중 for문을 사용하면 시간초과가 되어 최초의 누적 합을 구한 뒤, 이전값을 빼주고 다음값을 더해주도록 하였다. 

using System;

namespace _21921
{
    class Program
    {
        static void Main()
        {
            StreamReader sr = new StreamReader(Console.OpenStandardInput());
            StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

            String[] str = sr.ReadLine().Split(' ');
            String[] dayStr = sr.ReadLine().Split(' ');
            int n = int.Parse(str[0]);
            int x = int.Parse(str[1]);
            int[] days = new int[n];

            for(int i = 0; i < n; i++)
            {
                days[i] = int.Parse(dayStr[i]);
            }

            int max = 0;    //최대방문자 수
            int count = 1;  //기간 수
            int sum = 0;
            for (int i = 0; i <= n - x; i++)
            {
                //첫 x일간의 누적 방문 수(누적 합)
                if(i == 0)
                {
                    for (int j = 0; j < x; j++)
                    {
                        sum += days[j];
                    }
                }
                else
                {
                    //슬라이딩 윈도우
                    sum = sum - days[i - 1] + days[i + x - 1];
                }

                if (sum > max)
                {
                    max = sum;
                    count = 1;
                }
                else if (sum == max) count++;
            }

            if (max == 0) sw.WriteLine("SAD");
            else
            {
                sw.WriteLine("{0}\n{1}", max, count);
            }

            sr.Close();
            sw.Flush();
            sw.Close();
        }
    }
}

'알고리즘 > 백준 BOJ' 카테고리의 다른 글

[ BOJ/C# ] 2869 달팽이는 올라가고 싶다  (0) 2023.09.01
[ BOJ/C# ] 10989 수 정렬하기 3  (0) 2023.08.30
[ BOJ/C# ] 1940 주몽  (0) 2023.08.28
[ BOJ/C# ] 1159 농구 경기  (0) 2023.08.27
[ BOJ/C# ] 1764 듣보잡  (0) 2023.08.26