⭐️ Two Pointer
시작 포인터와 끝 포인터를 무조건 짝수로 하다보니 풀이가 난잡해짐
⭐️ Two Pointer
⭐️ 짝수가 아예 없는 경우도 존재하기 때문에 일딴 start, end 포인터를 동일하게 0 으로 정의하여 시작
Two Pointer 풀이를 할 때는 구간을 미리 정의해주기 애매하면 start, end 를 모두 0 으로 정의하고 end 포인터를 우선적으로 이동하되 더 이상 이동할 수 없는 경우라면 start 포인터를 옮겨주는 방식으로 두 포인터를 옮겨가며 최적의 구간을 탐색해야 함
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, k;
cin >> n >>k;
vector<int> num(n);
for(int i=0;i<n;i++) {
cin >> num[i];
}
int st=0,end=0,cnt=0,ans=0;
while (end<n) {
if(cnt>k) {
if(num[st]%2==1) cnt--;
st++;
}
else {
if(num[end]%2==1) cnt++;
end++;
}
if(cnt<=k) ans=max(ans,end-st-cnt);
}
cout << ans << endl;
}