[Python] 백준 / silver / 14465번 (소가 길을 건너간 이유 5)

김상우·2021년 10월 6일
0
post-custom-banner

문제 링크 : 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)
profile
안녕하세요, iOS 와 알고리즘에 대한 글을 씁니다.
post-custom-banner

0개의 댓글