728x90
반응형
https://www.acmicpc.net/problem/15565
15565번: 귀여운 라이언
꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, k;
cin >> n >> k;
vector<int> rion_position;
for(int i = 1; i <= n; i++){
int x;
cin >> x;
if(x == 1) rion_position.push_back(i);
}
if(rion_position.size() < k){
cout << -1 << endl;
return 0;
}
int ans = 1000001;
for(int i = 0; i <= rion_position.size() - k; i++){
ans = min(ans, rion_position[i + k - 1] - rion_position[i] + 1);
}
cout << ans << endl;
return 0;
}
입력 배열에서, 라이언이 위치한 인덱스의 위치를 저장하는 별도의 배열을 만든다.
이 인덱스를 K개 조사하는 슬라이딩 윈도우를 만들어준다.
아래 그림은 K개의 라이언이 존재하려면 1~7까지 총 7개의 인형이 필요한 경우이다.
아래 그림은 K개의 라이언이 존재하려면 5~10까지 총 6개의 인형이 필요한 경우이다.
이처럼 윈도우를 이동하며 라이언이 K개 존재할 수 있는 인형 수를 찾아, 최소 개수를 출력한다.
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 20055번 컨베이어 벨트 위의 로봇 (C++) [삼성 SW 역량테스트 기출] (0) | 2023.10.01 |
---|---|
[BOJ] 1781번 컵라면 (C++) (0) | 2023.05.10 |
[BOJ] 1068번 트리 (C++) (0) | 2023.03.19 |
[BOJ] 18429번 근손실(C++) (0) | 2023.03.19 |
[BOJ] 2263번 트리의 순회 (C++) (0) | 2023.03.18 |