본문 바로가기
Study (etc)/Problem Solving

[BOJ / C++] 15565번 : 귀여운 라이언

by Haren 2023. 5. 25.

문제

꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의 크기를 구하여라.

입력

첫 줄에 N과 K가 주어진다. (1 ≤ K ≤ N ≤ 106)

둘째 줄에 N개의 인형의 정보가 주어진다. (1 또는 2)

출력

K개 이상의 라이언 인형을 포함하는 가장 작은 연속된 인형들의 집합의 크기를 출력한다. 그런 집합이 없다면 -1을 출력한다.

Solved.ac 레벨

실버 I

풀이

#include <bits/stdc++.h>

using namespace std;

int n, k, ans = 999999;
int sum = 0;
vector<int> lion;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> n >> k;

    for(int i = 1; i <= n; i++) {
        int doll;
        cin >> doll;

        if(doll == 1) lion.push_back(i);
        //라이언 인형의 위치(인덱스)를 lion 벡터에 저장
    }

    if(lion.size() < k) {
        cout << -1 << "\n";
        //라이언 인형의 개수가 k개보다 적다면 -1을 출력하고 종료한다.
        return 0;
    }

    for(int i = 0; i <= lion.size() - k; i++) {
        ans = min(lion[i + k - 1] - lion[i] + 1 , ans);
        //라이언 인형 사이의 거리가 가장 작은 경우를 ans에 담는다.
    }

    cout << ans << "\n";

    return 0;
}

 

 

15565번: 귀여운 라이언

꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의

www.acmicpc.net