[ 문제 ]
[ 접근방법 ]
투 포인터 알고리즘을 활용한다.
이를 통해 O(N)에 해결 가능하다.
[ 소스코드 ]
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> s(n);
vector<int> frequency(10, 0);
for(int i = 0; i < n; i++)cin >> s[i];
int l = 0, r = 0, cnt = 1, ans = 0;
frequency[s[l]]++;
while(l <= r && r < n){
if(cnt <= 2){
ans = max(ans, r - l + 1);
r++;
if(!frequency[s[r]])cnt++;
frequency[s[r]]++;
}
else{
frequency[s[l]]--;
if(!frequency[s[l]])cnt--;
l++;
}
}
cout << ans;
return 0;
}
'PS' 카테고리의 다른 글
[ 백준 / C++ ] 6064 : 카잉 달력 (0) | 2024.08.14 |
---|---|
[ 백준 / C++ ] 5525 : IOIOI (0) | 2024.08.13 |
[ 백준 / C++ ] 21736 : 헌내기는 친구가 필요해 (0) | 2024.08.09 |
[ 백준 / C++ ] 28702 : FizzBuzz (0) | 2024.08.08 |
[ 백준 / C++ ] 30802 : 웰컴 키트 (0) | 2024.08.07 |