https://www.acmicpc.net/problem/20922
보자마자 필이 짜르르 옴
이건 슬라이딩 윈도우다
윈도우 범위 조절을 위해 start, end 두개 사용
범위 내 숫자 빈도는 딕셔너리 사용
현재 윈도우 범위에서 특정 숫자가 K개를 초과하면
start를 움직여서 k개가 되도록 while문을 돌면서 이동
윈도우 최장 길이는
end-start+1로 업데이트
from collections import defaultdict
n,k = map(int,input().split())
a = list(map(int,input().split()))
count = defaultdict(int)
start=0
max_l = 0
for end in range(n):
count[a[end]]+=1
while count[a[end]]>k:
count[a[start]]-=1
if count[a[start]]==0:
del count[a[start]]
start+=1
max_l = max(max_l, end-start+1)
print(max_l)
'개발자 강화 > 코딩 테스트' 카테고리의 다른 글
[백준] 2668 숫자고르기 / dfs / python 골5 (1) | 2024.11.30 |
---|---|
[백준] 2304 창고 다각형 / Python 실2 (1) | 2024.11.29 |
[백준] 21921 블로그 / 구현 / Python 실3 (0) | 2024.11.27 |
[백준] 9935 문자열 폭발 / 구현 / Python 골4 (2) | 2024.11.26 |
[백준] 10026 적록색약 / BFS / Python 골5 (0) | 2024.11.25 |