import java.util.*;
class Main {
public int solution(int n, int m, int[] arr) {
int answer = 0, cnt = 0, lt = 0;
for(int rt = 0; rt < n; rt++) {
// cnt는 0을 1로 바꾼 횟수
// rt가 0이면 cnt++
if(arr[rt] == 0) {
cnt++;
}
// 0을 1로 바꾼 횟수가 m보다 많을때동안
while(cnt > m) {
// lt가 0이면 cnt--
if(arr[lt] == 0) {
cnt--;
}
// lt 오른쪽으로 계속 이동
lt++;
}
// lt와 rt가 1이라고 하면 arr[0] = 1이므로
// 0 - 0 + 1 = 1
answer = Math.max(answer, rt-lt+1);
}
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));
}
}
import java.util.*;
class Main {
public int solution(int n, int m, int[] arr) {
int answer = 0, cnt = 0, lt = 0;
for(int rt = 0; rt < n; rt++) {
if(arr[rt] == 0) {
cnt++;
}
while(cnt > m) {
if(arr[lt] == 0) {
cnt--;
}
lt++;
}
answer = Math.max(answer, rt-lt+1);
}
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));
}
}
'코딩테스트 > 기초' 카테고리의 다른 글
32. 아나그램(해쉬) (0) | 2024.12.28 |
---|---|
31. 학급 회장(해쉬) (1) | 2024.12.28 |
29. 연속된 자연수의 합 (0) | 2024.12.21 |
28. 연속 부분수열 (1) | 2024.12.20 |
27. 최대 매출 (0) | 2024.12.17 |