Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

전공공부

[BOJ_22862] 가장 긴 짝수 연속한 부분 수열 (large) 본문

Study/Problem Solving

[BOJ_22862] 가장 긴 짝수 연속한 부분 수열 (large)

monitor 2023. 11. 13. 05:45

설명


start 지점은 그저 처음 카운트 할 때 홀 수이면 초기화 해서 올라가기 위함이고 end는 계속 상승시키면서 만일, K 번을 초과하면 break해서 나오는 코드를 짰다. 그래서 연속한 긴 짝수 부분 수열을 구했다. 그리고, 처음에는 max라는 변수를 두고 짝수의 카운트 값을 잡았는데 이렇게 하면 초기화를 시키는 부분이 많아져서 end - start - cnt로 변경해서 풀었다.

코드


package two_pointer;

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

public class BOJ_22862 {
    public static void main(String[] args) throws Exception{
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer tk = new StringTokenizer(in.readLine()," ");

        int N = Integer.parseInt(tk.nextToken());
        int K = Integer.parseInt(tk.nextToken());
        int arr[] = new int[N];
        tk = new StringTokenizer(in.readLine()," ");
        for(int i = 0; i < N; i++){
            arr[i] = Integer.parseInt(tk.nextToken());
        }
        int start = 0;
        int end = 0;
        int ans = 0;
        int cnt = 0;
        while(end < N){
            while(end < N) {
                if (arr[end] % 2 == 0) {
                    end++;
                } else {
                    if (cnt < K) {
                        cnt++;
                        end++;
                    } else {
                        break;
                    }
                }
            }
            ans = Math.max(ans,end - start - cnt);
            while(start < N){
                if(arr[start] % 2 != 0) {
                    cnt--;
                    start++;
                    break;
                }else {
                    start++;
                }
            }
        }
        System.out.println(ans);
    }
}
 

22862번: 가장 긴 짝수 연속한 부분 수열 (large)

수열 $S$에서 최대 $K$번 원소를 삭제한 수열에서 짝수로 이루어져 있는 연속한 부분 수열 중 가장 긴 길이를 출력한다.

www.acmicpc.net

 

'Study > Problem Solving' 카테고리의 다른 글

[BOJ_2745] 진법 변환  (1) 2023.11.15
[BOJ_3151] 합이 0  (1) 2023.11.14
[BOJ_2470] 두 용액  (1) 2023.11.12
[BOJ_20922] 겹치는 건 싫어  (1) 2023.11.11
[BOJ_21921] 블로그  (0) 2023.11.08