백준 15565번 귀여운 라이언

김두현·2023년 1월 22일
1

백준

목록 보기
78/133
post-thumbnail

🔒[문제 url]

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


🪄전체 코드

#include <iostream>
#include <algorithm>
using namespace std;

int n,k;
int doll[1000001];//인형 진열 상태
int cnt = 0;//라이언 인형의 갯수

void INPUT()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n >> k;
    for(int i = 0; i < n; i++) cin >> doll[i];
}


void SOLVE()
{
    
    //Init
    int ans = 2e9;
    int left = 0,right = 0;
    if(doll[left] == 1) cnt = 1;

    while(right < n)
    {
        if(cnt == k)
        {//라이언 인형의 수가 k와 같다면
            ans = min(ans,right-left+1);//최소 길이 갱신
            
            //옮기기 전 왼쪽 포인터가 라이언 인형을 가리킨다면 cnt 1 감소 후
            if(doll[left] == 1) cnt--;
            //왼쪽 포인터를 오른쪽으로 옮긴다.
            left++;
        }
        else if(cnt < k)
        {//라이언 인형의 수가 k보다 작다면
            right++;//오른쪽 포인터를 옮긴 후
            if(doll[right] == 1) cnt++;//라이언 인형을 가리킨다면 cnt 1증가
        }
    }
    if(ans==2e9) cout << -1;
    else cout << ans;
}

int main()
{
    INPUT();
    SOLVE();
}

🥇문제 후기

GOLD5 미만 난이도는 알고리즘 및 풀이 설명을 주석으로 대체합니다.
주석을 참고해주세요.


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글