https://www.acmicpc.net/problem/20922
20922번: 겹치는 건 싫어
홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열
www.acmicpc.net
생각해보기
- 동일한 갯수가 넘어간다면 그 숫자를 줄일때까지 l을 움직여준다.
- 투 포인터를 사용하자.
코드
#include<iostream>
using namespace std;
int N,K;
int arr[200001];
int chk[100001];
void input(){
cin>>N>>K;
for(int i=0;i<N;++i){
cin>>arr[i];
}
}
void solution(){
int ans = 0;
int l=0, r=0;
while(r<N){
++chk[arr[r]];
while(chk[arr[r]] > K){
--chk[arr[l++]];
}
ans = max(ans, r-l+1);
++r;
}
cout<<ans<<'\n';
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
input();
solution();
return 0;
}

728x90
'알고리즘 > 백준 문제' 카테고리의 다른 글
| 2098 - 외판원 순회 (0) | 2023.07.18 |
|---|---|
| 2631 - 줄세우기 (0) | 2023.07.17 |
| 14940 - 쉬운 최단거리 (0) | 2023.07.17 |
| 17609 - 회문 (0) | 2023.07.16 |
| 16401 - 과자 나눠주기 (0) | 2023.07.15 |
댓글