https://www.acmicpc.net/problem/22862
22862번: 가장 긴 짝수 연속한 부분 수열 (large)
수열 $S$에서 최대 $K$번 원소를 삭제한 수열에서 짝수로 이루어져 있는 연속한 부분 수열 중 가장 긴 길이를 출력한다.
www.acmicpc.net
과정
- l과 r 범위 내에서 홀수가 얼마나 있는지 체크한다.
- 만약 cnt(홀수 갯수)가 K를 넘어 선다면 l을 홀수 갯수가 감소할 때까지 옮긴다.
- r이 끝에 도달할 때 까지 반복한다.
코드
#include<iostream>
#include<vector>
using namespace std;
int N, K;
vector<int> S;
void input(){
int a;
cin>>N>>K;
for(int i=0;i<N;++i){
cin>>a;
S.push_back(a);
}
}
void solution(){
int l=0, r=0, cnt=0;
int ans=0;
while(r<N){
if(S[r] % 2 == 1){
++cnt;
}
while(cnt>K && l<r){
cnt -= S[l++] % 2;
}
ans = max(ans, r-l+1-cnt);
++r;
}
cout<<ans<<'\n';
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
input();
solution();
return 0;
}

728x90
'알고리즘 > 백준 문제' 카테고리의 다른 글
| 17609 - 회문 (0) | 2023.07.16 |
|---|---|
| 16401 - 과자 나눠주기 (0) | 2023.07.15 |
| 17266 - 어두운 굴다리 (0) | 2023.07.15 |
| 2179 - 비슷한 단어 (0) | 2023.07.14 |
| 1446 - 지름길 (0) | 2023.07.14 |
댓글