ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 21921번 블로그(자바) - 슬라이딩 윈도우
    코딩테스트 2023. 1. 18. 16:43

    블로그 

     
    시간 제한메모리 제한제출정답맞힌 사람정답 비율
    1 초 512 MB 3822 1536 1245 39.536%

    문제

    찬솔이는 블로그를 시작한 지 벌써 일이 지났다.

    요즘 바빠서 관리를 못 했다가 방문 기록을 봤더니 벌써 누적 방문 수가 6만을 넘었다.

    찬솔이는 일 동안 가장 많이 들어온 방문자 수와 그 기간들을 알고 싶다.

    찬솔이를 대신해서 일 동안 가장 많이 들어온 방문자 수와 기간이 몇 개 있는지 구해주자.

    입력

    첫째 줄에 블로그를 시작하고 지난 일수  가 공백으로 구분되어 주어진다.

    둘째 줄에는 블로그 시작 1일차부터 일차까지 하루 방문자 수가 공백으로 구분되어 주어진다.

    출력

    첫째 줄에 일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다.

    만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다.

    제한

    •  1≤�≤�≤250,000
    •  0≤ 방문자 수 ≤8,000

    예제 입력 1 복사

    5 2
    1 4 2 5 1
    

    예제 출력 1 복사

    7
    1
    

    예제 입력 2 복사

    7 5
    1 1 1 1 1 5 1
    

    예제 출력 2 복사

    9
    2

    처음에 period 값을 1로 갱신시켜야 한다!

    import java.util.Scanner;
    
    public class Main {
        static int n,x;
        static int[] visit;
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            n = sc.nextInt();
            x = sc.nextInt();
            visit = new int[n];
            int answer = 0;
            int period = 0;
            for (int i = 0; i < n; i++) {
                visit[i] = sc.nextInt();
            }
            int sum = 0;
            for (int i = 0; i <n; i++) {
                sum += visit[i];
                if (i == x-1) {
                    answer = sum;
                    period = 1;
                }
                else if (i >= x) {
                    sum -= visit[i-x];
                    if (sum == answer) period++;
                    else if (sum > answer) {
                        answer = sum;
                        period = 1;
                    }
                }
            }
            if (answer == 0) {
                System.out.println("SAD");
                System.exit(0);
            }
            else System.out.println(answer + "\n" + period);
        }
    }
Designed by Tistory.