Atcoder Wide-Flip 문제인데요.

https://atcoder.jp/contests/arc088/tasks/arc088_B


제한조건에서

|S|<= 10만

이니까 O(N) 이나 O(NlgN)으로 풀어야 할거 같아서

곰곰히 생각해보았는데요.


처음에 생각한건 주어진 문자열을

string str이라고 하면

int left = str[0]; 이라 하고

int right= str.size()-1; 이라고 했어요.

[l,r]

[l,r-1] , [l+1, r]

[l,r-2], [l+1,r-1] , [l+2, r]

.....


이런식으로 만들어서 조합을 해볼까 하다가 N의 길이를 생각해보니 안될 것 같더라구요.

그래서

유심히 보다보니

그러면 str 에서 연속된 0이나 1의 가장 긴 길이를 찾아서 구해보면 되지 않을까 생각했어요.

ex ) 100111011110

일때, 1 이나 0으로 가장 연속적으로 긴 부분은 right= 11, left=8이니까

답은 right-left+1의 길이에서 +1을 더 더한 값(결과적으로 right-left+2) 이라고 생각을 했죠. 이곳에서 예외처리로 가장 긴 문자열의 길이가 포함되는

left나 right가 str[0]이나 str[str.size()-1]인 곳에서는 답을 right-left+1이라고 했습니다.


그런데 case 16.txt 번 부터 Wrong Anser가 뜨네요.

제 방법에 예외가 있을까요?