728x90
문제
https://www.acmicpc.net/problem/22862
📌 풀이
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = 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 = 0;
int answer = Integer.MIN_VALUE;
int count = 0;
// 투 포인터 알고리즘
for(int end=0; end<N; end++) {
if(arr[end]%2!=0) count++; // end 지점이 홀수면 count+1
while(count>K) { // count값이 K보다 큰 경우
if(arr[start]%2!=0) count--; // start 지점이 홀수면 count-1
start++; // start를 오른쪽 한 칸 이동
}
answer= Math.max(answer, end-start+1-count);
}
bw.write(String.valueOf(answer));
bw.close();
}
}
728x90
'[알고리즘] > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 6996번 : 애너그램 (브론즈1) (0) | 2022.04.23 |
---|---|
[알고리즘] 베스트앨범 (프로그래머스 3레벨) (0) | 2022.04.23 |
[알고리즘] 백준 16967번 : 배열 복원하기 (실버3) (0) | 2022.04.18 |
[알고리즘] 백준 1268번 : 임시 반장 정하기 (브론즈1) (0) | 2022.04.18 |
[알고리즘] 백준 1205번 : 등수 구하기 (실버4) (0) | 2022.04.15 |