본문 바로가기

CodingTest

[Python][백준 15565 번] 강의실 배정

 

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


# 슬라이딩 윈도우


'''
라이언 인형이 딱 K개가 되는 구간만 확인해주면 된다

"항상 K개가 되는 것을 확인해야 하므로, 슬라이딩 윈도우를 활용할 수 있는 것이다"

라이언들의 idx들을 구해놓는다
0 4 6 9

K가 3이라면
0 4 6
4 6 9
라는 2개의 set가 존재하게 되며

처음 idx - 마지막 idx + 1 을 해주면
인형이 포함된 전체 인형의 개수가 된다

윈도우의 크기를 K로 유지하면
한칸씩 뒤로 밀어가며 계속 비교해가면 된

'''


N ,K = map(int,input().split())
dolls = list(map(int, sys.stdin.readline().split()))

lion = [] # 라이언 위치 저장
for i in range(len(dolls)) :
    if dolls[i] == 1 :
        lion.append(i)

if len(lion) < K :
    print(-1)
    exit(0)

start = 0
end = K - 1
res = int(1e9)

while end < len(lion) :
    length = lion[end] - lion[start] + 1
    res = min(length, res)
    start += 1
    end += 1

print(res)