import java.util.Scanner;
public class Main {
public int solution(int n, int m, int[] arr){
int answer = 0, cnt = 0, lt = 0; // cnt는 0을 1로 바꾼 횟수
for(int rt = 0; rt < n; rt++) {
if(arr[rt] == 0) cnt++; //0을 만나면 cnt를 증가
while(cnt > m) { //1로 바꾼 횟수가 초과하면(0을 m번 초과해서 만나면)
if(arr[lt] == 0) cnt--; //0인 지점을 찾아서 줄여줌
lt++;
}
//rt-lt+1은 1이 연속된 연속부분수열의 길이
answer = Math.max(answer, rt-lt+1);
}
//rt=0일 때 그냥 rt++ answer = 1
//rt=1일 때도 그냥 rt++ answer = 2
//rt=2일 때 arr[2]=0; cnt=1; answer = 3
//rt=3일 때 arr[3]=0; cnt=2; answer = 4
//rt=4일 때 그냥 rt++ answer = 5
//rt=5일 때 그냥 rt++; answer = 6
//rt=6일 때 arr[6]=0; cnt=3 3>2이므로 arr[2]=0 이므로 cnt=2 lt=3 answer = 4
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int m = kb.nextInt();
int[] arr = new int[n];
for(int i = 0; i<n; i++) {
arr[i] = kb.nextInt();
}
System.out.print(T.solution(n, m, arr));
}
}
'Algorithm > inflearn' 카테고리의 다른 글
★아나그램(Hash) (0) | 2021.09.15 |
---|---|
#학급 회장(Hash) (0) | 2021.09.15 |
연속된 자연수의 합(two pointers) (0) | 2021.09.14 |
★연속 부분수열 (0) | 2021.09.14 |
★공통원소 구하기 (0) | 2021.09.13 |