귀여운 라이언 15565

LJM·2023년 2월 22일
0

백준풀기

목록 보기
111/259

https://www.acmicpc.net/problem/15565

leetcode 에서 슬라이딩 윈도우문제를 경험한 덕분에 풀 수 있었다

시간복잡도 2N

import java.io.*;

public class Main
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] input = br.readLine().split(" ");
        int N = Integer.parseInt(input[0]);
        int K = Integer.parseInt(input[1]);

        int[] arr = new int[N];
        input = br.readLine().split(" ");
        for(int i = 0; i < N; ++i)
        {
            arr[i] = Integer.parseInt(input[i]);
        }

        int l = 0;
        int r = 0;
        int ryan = 0;
        if(arr[0] == 1)
            ryan++;
        int min = Integer.MAX_VALUE;
        while(r < N)
        {
            if(ryan < K)
            {
                r++;
                if((r < N) && arr[r] == 1)
                    ryan++;
            }
            else
            {
                if(arr[l] == 1)
                    ryan--;
                l++;
            }

            if(ryan == K)
                min = Math.min(min, r-l + 1);
        }

        if(min == Integer.MAX_VALUE)
            System.out.println(-1);
        else
            System.out.println(min);
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글