반응형
윈도우를 덱으로 구성해주었다.
윈도우 크기가 k+1미만이면 윈도우에 append하고, 이름길이 배열의 갯수를 더해준다.
윈도우 크기가 k+1(k등 이상 차이이므로)나게 되면 popleft하여, 해당 값의 이름 길이 배열의 갯수에서 빼준다.
마지막에는 window에는 k+1이하의 길이를 가진 값들이 남게 되는데 이 값들을 동일하게 큐느낌으로 처리해주었다.
import sys
input=sys.stdin.readline
from collections import deque
n,k=map(int,input().split())
count=[0 for x in range(21)]
name=[]
window=deque()
ans=0
for x in range(n):
name.append([x+1,len(input().rstrip())])
for now in name:
window.append(now[1])
count[now[1]]+=1
if len(window)==k+1:
x=window.popleft()
count[x]-=1
ans+=count[x]
while window:
x=window.popleft()
count[x]-=1
ans+=count[x]
print(ans)
반응형