https://www.acmicpc.net/problem/22862
22862번: 가장 긴 짝수 연속한 부분 수열 (large)
수열 $S$에서 최대 $K$번 원소를 삭제한 수열에서 짝수로 이루어져 있는 연속한 부분 수열 중 가장 긴 길이를 출력한다.
www.acmicpc.net
n,k =map(int,input().split())
S = list(map(int, input().split()))
lt = 0
rt = 0
cnt, res = 0, 0
while rt < n:
if cnt > k:
if S[lt] %2 ==1 :
cnt -=1
lt +=1
continue
else:
if S[rt] %2 ==1 :
cnt +=1
rt +=1
res = max(res, rt -lt -cnt)
print(res)
투 포인터 알고리즘 활용
1. K값을 기준으로 cnt 와 비교해서, k값이 더 많을 경우
왼쪽 포인터의 값을 조절해준다
2. k값이 적을경우에는 오른쪽 값을 움직여준다
3. while문 안에서 최댓값을 갱신해준다.
'💡 Codeing Test > 백준' 카테고리의 다른 글
백준 14719) 빗물 (python) (0) | 2024.03.14 |
---|---|
백준 2003) 수들의 합2 (python) (0) | 2024.03.11 |
백준 5525) IOIOI (python) (0) | 2024.03.07 |
백준 1495) 기타리스트 (python) (0) | 2024.03.05 |
백준 19583) 싸이버 개강 총회 (python) (1) | 2024.03.05 |