문제
꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 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;
}
'Study (etc) > Problem Solving' 카테고리의 다른 글
[BOJ / C++] 2559번 : 수열 (0) | 2023.05.25 |
---|---|
[BOJ / C++] 5591번 : 最大の和 (최대합) (0) | 2023.05.25 |
[BOJ / C++] 26091번 : 현대모비스 소프트웨어 아카데미 (0) | 2023.05.25 |
[BOJ / C++] 24164번 : 光ファイバー網の整備 (Fiber) (0) | 2023.05.19 |
[BOJ / C++] 1038번 : 감소하는 수 (0) | 2023.05.19 |