본문 바로가기
ps

[백준] 15565 - 귀여운 라이언

by kariskan 2022. 11. 5.

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

 

15565번: 귀여운 라이언

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

www.acmicpc.net

 

K와 N 모두 1 이상 10^6 이하인 구간이므로, 일반적인 투 포인터를 사용하면 TLE가 날 수 있다.

 

그래서 라이언 인형의 좌표만 따로 저장하였다.

 

예를 들어 예제 입력 1에서

1 2 2 2 1 2 1 2 2 1 => 0 4 6 9

이런 식으로 라이언의 좌표만 따로 저장하면 O(N) 시간에 답을 구할 수 있는 것이 자명하다.

 

이후 left = 0, right = k - 1로 두고 탐색하면 된다.

 

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

int n, k;
vector<int> v;

int main()
{
	cin >> n >> k;
	for (int i = 0; i < n; i++)
	{
		int a;
		cin >> a;
		if (a == 1)
			v.push_back(i);
	}

	if (v.size() < k)
		cout << -1;
	else
	{
		int left = 0, right = k - 1;
		int ans = 1000000000;
		while (right < v.size())
		{
			ans = min(ans, v[right] - v[left] + 1);
			left++;
			right++;
		}
		cout << ans;
	}
}

'ps' 카테고리의 다른 글

[백준] 3079 - 입국심사  (0) 2022.11.08
[백준] 13911 - 집 구하기  (0) 2022.11.08
[백준] 14400 - 편의점 2  (0) 2022.11.05
[백준] 20665 - 독서실 거리두기  (0) 2022.11.04
[백준] 1368 - 물대기  (0) 2022.09.21

댓글