[BOJ][C++] ๋ฐฑ์ค 15565๋ฒ: ๊ท์ฌ์ด ๋ผ์ด์ธ
https://www.acmicpc.net/problem/15565
๋ฌธ์
๊ฟ๊ท ๋ผ์ด์ธ ์ธํ๊ณผ, ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฟ๊ท์ธ ์ดํผ์น ์ธํ์ด N๊ฐ ์ผ๋ ฌ๋ก ๋์ฌ ์๋ค. ๋ผ์ด์ธ ์ธํ์ 1, ์ดํผ์น ์ธํ์ 2๋ก ํํํ์. ๋ผ์ด์ธ ์ธํ์ด K๊ฐ ์ด์ ์๋ ๊ฐ์ฅ ์์ ์ฐ์๋ ์ธํ๋ค์ ์งํฉ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ์ฌ๋ผ.
์ ๋ ฅ
์ฒซ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ K ≤ N ≤ 106)
๋์งธ ์ค์ N๊ฐ์ ์ธํ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. (1 ๋๋ 2)
์ถ๋ ฅ
K๊ฐ ์ด์์ ๋ผ์ด์ธ ์ธํ์ ํฌํจํ๋ ๊ฐ์ฅ ์์ ์ฐ์๋ ์ธํ๋ค์ ์งํฉ์ ํฌ๊ธฐ๋ฅผ ์ถ๋ ฅํ๋ค. ๊ทธ๋ฐ ์งํฉ์ด ์๋ค๋ฉด -1์ ์ถ๋ ฅํ๋ค.
ํ์ด
ํ๋ก๊ทธ๋๋จธ์ค ์๋ ๋ฐฑ์ค์ ๋ผ์ด์ธ ๋์๋ ๋๋๊ฑฐ์?
์ ํ์ ์ธ ํฌํฌ์ธํฐ ๋ฌธ์
๋จ ํฌ์ธํฐ๋ฅผ ์์ง์ด๋ฉด์ ์ฐ์ฐํ ๋ ๋ํ๊ธฐ์ ๋นผ๊ธฐ๋ฅผ ์กฐ๊ฑด์ ๋ง๊ฒ ์ ํด์ผํ๋ ์ฃผ์ํ์
// ํ์ด : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int>v(n);
for(int i=0; i<n; i++) {
cin >> v[i];
}
int left=0, right=0;
int cnt = v[left]==1 ? 1 : 0;
int ans = n+1;
while(left<=right && right<n) {
if(cnt>=k) {
ans = min(ans, right-left+1);
cnt -= v[left]==1 ? 1 : 0;
left++;
} else {
right++;
cnt += v[right]==1 ? 1 : 0;
}
}
if(ans==n+1) {
ans = -1;
}
cout << ans;
return 0;
}