2531 - 회전 초밥
2025. 2. 15. 13:30ㆍPS/백준
문제
https://www.acmicpc.net/problem/2531
느낀점
투 포인터 기본 문제였다. 슬라이딩 윈도우 타입의 기본 문제
풀이
#include <iostream>
#include <vector>
using namespace std;
int countSushiType(vector<int> &count)
{
int result = 0;
for (size_t i = 0; i < count.size(); i++)
{
if (count[i] != 0)
{
result++;
}
}
return result;
}
int main()
{
int N, d, k, c;
cin >> N >> d >> k >> c;
vector<int> count(d + 1, 0);
vector<int> sushi(N);
int left = 0, right = left + k - 1;
for (int i = 0; i < N; i++)
{
cin >> sushi[i];
if (left <= i && i <= right)
{
count[sushi[i]]++;
}
}
count[c]++;
int maxValue = countSushiType(count);
for (int i = left + 1; i < N; i++)
{
right = (i + k - 1) % N;
count[sushi[i - 1]]--;
count[sushi[right]]++;
maxValue = max(maxValue, countSushiType(count));
}
cout << maxValue;
return 0;
}
'PS > 백준' 카테고리의 다른 글
20922 - 겹치는 건 싫어 (0) | 2025.02.17 |
---|---|
15565 - 귀여운 라이언 (0) | 2025.02.17 |
22857 - 가장 긴 짝수 연속한 부분 수열 (small) (0) | 2025.02.14 |
2003 - 수들의 합 (0) | 2025.02.14 |
14246 - K보다 큰 구간 (0) | 2025.02.14 |