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

2631 - 줄세우기

by HDobby 2023. 7. 17.

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

 

2631번: 줄세우기

KOI 어린이집에는 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기

www.acmicpc.net

생각해보기

  1. 아이들이 가장 안움직여도 되는 경우를 따지자.
  2. 결국 번호 순서를 오름차순으로 정렬시키는게 핵심이다.
  3. lis(가장 긴 증가 수열)을 이용하자.

코드

#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

'알고리즘 > 백준 문제' 카테고리의 다른 글

1911 - 흙길 보수하기  (0) 2023.07.18
2098 - 외판원 순회  (0) 2023.07.18
20922 - 겹치는 건 싫어  (0) 2023.07.17
14940 - 쉬운 최단거리  (0) 2023.07.17
17609 - 회문  (0) 2023.07.16

댓글