본문 바로가기

알고리즘/백준

백준 boj 20922. 겹치는건 싫어

간단한 투포인터 문제. 하지만 간단하게 가지 않으면 시간초과가 나기 쉬우니까 유념하기.

N, K = map(int, input().strip().split())
lst = list(map(int, input().strip().split()))

D = {}
l = set(lst)
for x in l:
  D[x] = 0

############################

j = 0
ans = -1e8
cnt = 0
for i in range(N):
  if i > 0: 
    D[lst[i-1]] -= 1
    cnt -= 1

  while j<N:
    if D[lst[j]]+1 > K: break

    D[lst[j]] += 1
    j += 1
    cnt += 1
  ans = max(ans, cnt)

print(ans)