간단한 투포인터 문제. 하지만 간단하게 가지 않으면 시간초과가 나기 쉬우니까 유념하기.
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)
'알고리즘 > 백준' 카테고리의 다른 글
백준 boj 21608. 상어초등학교 (0) | 2025.03.20 |
---|---|
백준 boj. 17142 연구소 3 [골드 🥇🥇🥇] (0) | 2025.03.10 |
백준 boj. 17484 진우의 달 여행 [실버 🥈🥈🥈] (0) | 2025.03.07 |
boj >> 1931 회의실 배정(c++) (0) | 2020.04.13 |
boj >> 2193 이친수 (0) | 2020.03.29 |