본문 바로가기
알고리즘/백준 문제

20922 - 겹치는 건 싫어

by HDobby 2023. 7. 17.

https://www.acmicpc.net/problem/20922

 

20922번: 겹치는 건 싫어

홍대병에 걸린 도현이는 겹치는 것을 매우 싫어한다. 특히 수열에서 같은 원소가 여러 개 들어 있는 수열을 싫어한다. 도현이를 위해 같은 원소가 $K$개 이하로 들어 있는 최장 연속 부분 수열

www.acmicpc.net

생각해보기

  1. 동일한 갯수가 넘어간다면 그 숫자를 줄일때까지 l을 움직여준다.
  2. 투 포인터를 사용하자.

코드

#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

댓글