https://codeforces.com/contest/2225/problem/B
s[i]==s[i+1]인 i의 개수를 세어봅시다.
만약 그 개수가 0이라면, 항상 가능합니다.
만약 그 개수가 1이라면, 앞에서부터 연속된 구간을 선택함으로써 가능하게 됩니다.
만약 그 개수가 2라면, s[i]==s[i+1]인 두 인덱스 i를 i1, i2라고 해봅시다. 그러면 구간 [i1+1,i2]에 대해서 연산을 적절히 수행해주면 항상 가능합니다.
만약 그 개수가 3이상이라면, 항상 불가능합니다.
#include <iostream>
#include <string>
#define ll long long
using namespace std;
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll T;
string s;
cin>>T;
while (T--)
{
cin>>s;
ll len=s.length(),i,cnt=0;
for (i=0;i<len-1;i++)
if (s[i]==s[i+1])
cnt++;
cout<<(cnt<=2?"YES":"NO")<<"\n";
}
}

| 세 용액 (JUNGOL 2303) (0) | 2026.05.18 |
|---|---|
| 교차하지 않는 원의 현들의 최대집합 (JUNGOL 1769) (0) | 2026.05.18 |
| A Number Between Two Others (CF Edu R 189 - A) (0) | 2026.05.17 |
| 먼 카드 (JUNGOL 8565) (0) | 2026.05.16 |
| 팬미팅 (JUNGOL 5768) (0) | 2026.05.16 |