본문 바로가기

알고리즘/BAEKJOON

21921 블로그_Sliding Window

21921번: 블로그 (acmicpc.net)

 

21921번: 블로그

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

www.acmicpc.net

package Sliding_Window;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class Baekjoon_21921_블로그 {

	public static void main(String[] args) throws Exception {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		int N = Integer.parseInt(st.nextToken());
		int X = Integer.parseInt(st.nextToken());
		int[] arr = new int[N];
		
		st = new StringTokenizer(br.readLine(), " ");
		for(int i = 0; i < N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		
		int start = 1, end = X;
		int max = 0;
		ArrayList<Integer> list = new ArrayList<>();
		
		// max 초기값 설정
		for(int i = 0 ; i < X; i++) {
			max += arr[i];
		}
		list.add(max);
		
		for(int i = 0; i < N - X; i++) {
			max = max - arr[start-1] + arr[end];
			start++;
			end++;
			list.add(max);
		
		}
		Collections.sort(list); 
		if(list.get(list.size()-1) == 0) 
			System.out.println("SAD");
		else {
			System.out.println(list.get(list.size()-1));
			int cnt = 0;
			for(int i : list) {
				if(i == list.get(list.size()-1))
					cnt++;
			}
			System.out.println(cnt);
		}
	}

}

'알고리즘 > BAEKJOON' 카테고리의 다른 글

1197 최소 스패닝 트리_Kruskal  (0) 2021.07.05
1922 네트워크 연결_Prim  (0) 2021.07.04
15565 귀여운 라이언_Two Pointers  (0) 2021.06.28
2531 회전초밥_Sliding Window  (0) 2021.06.28
3273 두 수의 합_Two Pointers  (0) 2021.06.26