문제 링크 : https://www.acmicpc.net/problem/14465
슬라이딩 윈도우 문제이다. 신호등의 번호가 0번이 아닌 1번부터 매겨지기 때문에, index 설정에 주의해야 했다.
농부의 농장이 원형이라는 얘기는 왜 한걸까 ..
window의 크기를 K로 받아들이고, 인덱스 1부터 슬라이딩 윈도우를 진행한다.
for문의 range를 (2, N-K+2)로 설정해야 하는 것이 조금 헷갈렸다.
import sys
N, K, B = map(int, sys.stdin.readline().split())
signal = [1] * (N+1)
for _ in range(B):
signal[int(sys.stdin.readline())] = 0
window = sum(signal[1:K+1])
minBreak = K-window
for i in range(2, N-K+2):
window = window - signal[i-1] + signal[i-1+K]
minBreak = min(minBreak, K-window)
if minBreak == 0:
break
print(minBreak)