
- Solved.ac 기준 : 실버 2
- 사용언어 C++
문제 해석 및 풀이
- 배열을 만들어서 과일 종류가 두 개를 초과하면 윈도우의 왼쪽 끝을 오른쪽으로 이동시켜 과일 종류를 줄임
- 최대 길이 저장
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int n;
cin >> n;
vector<int> fruits(n);
for (int i = 0; i < n; i++) {
cin >> fruits[i];
}
unordered_map<int, int> fruitCount;
int maxLen = 0;
int left = 0;
for (int right = 0; right < n; right++) {
fruitCount[fruits[right]]++;
while (fruitCount.size() > 2) {
fruitCount[fruits[left]]--;
if (fruitCount[fruits[left]] == 0) {
fruitCount.erase(fruits[left]);
}
left++;
}
maxLen = max(maxLen, right - left + 1);
}
cout << maxLen;
return 0;
}