본문 바로가기
알고리즘/백준

[백준] 22862. 가장 긴 짝수 연속한 부분 수열 (large)

by vivi 2021. 11. 16.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        int[] d = new int[n];
        int cnt = 0;
        st = new StringTokenizer(br.readLine(), " ");
        for (int i = 0; i < n; i++) {
            int num = Integer.parseInt(st.nextToken());
            if (num % 2 == 0) cnt++;
            d[i] = cnt;
        }

        int lt = 0, rt = 0;
        int answer = 0;
        while (lt <= rt && rt < n) {
            // lt~rt 구간의 짝수 개수는 d[rt]-d[lt-1], 길이 - 짝수 개수 <= k 일 때, 길이
            int lk = 0;
            if (lt - 1 >= 0) lk = d[lt - 1];
            if (rt - lt + 1 - (d[rt] - lk) <= k) {
                answer = Math.max(answer, d[rt] - lk);
                rt++;
                continue;
            }
            lt++;
        }

        System.out.println(answer);
        br.close();
    }
}

 

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

[백준] 20442. ㅋㅋ루ㅋㅋ  (0) 2021.11.16
[백준] 7453. 합이 0인 네 정수  (0) 2021.11.16
[백준] 10816. 숫자 카드 2  (0) 2021.11.16
[백준] 16916. 부분 문자열  (0) 2021.11.16
[백준] 2407. 조합  (0) 2021.11.14

댓글