원형 큐이므로 배열 두개 이어주고 순회.
for 문을 돌려 right는 따로 컨트롤x
길이가 k가 되면 최댓값 갱신, left삭제, left idx 증가를 반복.ㄴ
import sys
input = sys.stdin.readline
from collections import defaultdict
N, d, k, c = map(int,input().split())
sushi = []
for _ in range(N):
sushi.append(int(input()))
sushi.extend(sushi)
left = 0
right = 0
max_cnt = 0
eat = defaultdict(int)
eat[c] += 1
for right in range(len(sushi)):
eat[sushi[right]] += 1
if right >= k-1:
max_cnt = max(max_cnt,len(eat))
eat[sushi[left]] -= 1
if eat[sushi[left]] == 0:
del eat[sushi[left]]
left += 1
print(max_cnt)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 20364 부동산 다툼. (1) | 2021.08.11 |
---|---|
[백준][Python] 2096 내려가기 (0) | 2021.08.11 |
[백준][Python] 6549 히스토그램에서 가장 큰 직사각형 (0) | 2021.08.10 |
[백준][Python] 1725 히스토그램 : stack (0) | 2021.08.10 |
[백준][Python] 17071 숨바꼭질5 (0) | 2021.08.10 |