practivceAlgorithm/백준
[백준][Python] 15961 회전초밥 : 슬라이딩 윈도우 연습
findTheValue
2021. 8. 11. 09:45
원형 큐이므로 배열 두개 이어주고 순회.
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)