Koala - 10기/코딩테스트 준비 스터디

[백준/python] #14465 : 소가 길을 건너간 이유

kjyook 2023. 3. 26. 13:57

문제가 없는 신호등은 0, 고장난 신호등은 1로 기록하며 배열을 만든다.

k 개의 연속된 신호등의 숫자의 합을 구해보면 그 결과값이 수리해야 하는 신호등의 개수이므로 이 중에서 최소값을 찾아서 출력하면 된다.

import sys

def main():
    n, k, b = map(int, sys.stdin.readline().split())

    light = [0]*n

    for _ in range(b):
        a = int(sys.stdin.readline())
        light[a-1] = 1


    start = 0
    end = k
    temp = 0
    for i in range(k):
        temp += light[i]
    answer = temp 

    while True:
        if end == n:
            break

        temp = temp - light[start] + light[end]
        start += 1
        end += 1

        answer = min(temp, answer)

    print(answer)
    return

if __name__=="__main__":
    main()