전구 장식
면접 대비시간 제한1초메모리 제한128 MB
0과 1로 이루어진 수열이 주어질 때, 연속한 한 구간을 최대 한 번 뒤집어 만들 수 있는 가장 긴 교대 부분수열의 길이를 구한다.
문제
축제 기간이 되면 상근이는 매년 복도를 화려한 전구 장식으로 꾸민다. 장식은 일렬로 늘어선 전구 개로 이루어지며, 각 전구는 켜져 있거나 꺼져 있다.
상근이는 전구를 조작하는 기계를 가져왔다. 이 기계는 연속한 구간을 하나 지정하면, 그 구간에 있는 전구의 상태를 모두 반전시킨다. 즉 켜져 있던 전구는 끄고, 꺼져 있던 전구는 켠다. 다만 이 기계는 매우 낡아서, 한 번 사용하면 다음 해가 될 때까지 다시 쓸 수 없다.
학생들은 켜진 전구와 꺼진 전구가 번갈아 나타나는 배열을 좋아하는데, 이러한 배열을 교대 패턴이라고 부른다. 상근이는 기계를 최대 한 번만 사용해서 가장 긴 교대 패턴을 만들려고 한다.
예를 들어 전구가 다음과 같이 놓여 있다고 하자. (○는 켜진 전구, ●는 꺼진 전구)
○ ○ ● ● ○ ● ○ ○ ○ ●
여기서 4번째부터 7번째까지 네 개의 전구에 기계를 사용하면 다음과 같이 바뀐다.
○ ○ ● ○ ● ○ ● ○ ○ ●
이때 2번째부터 8번째까지가 길이 7인 교대 패턴을 이룬다.
또는 8번째 전구 하나에만 기계를 사용하면 다음과 같이 바뀐다.
○ ○ ● ● ○ ● ○ ● ○ ●
이 경우에는 4번째부터 10번째까지가 길이 7인 교대 패턴을 이룬다.
이 예에서는 기계를 한 번만 써서 길이가 8 이상인 교대 패턴을 만들 수 없다.
전구의 초기 상태가 주어질 때, 기계를 최대 한 번 사용해서 만들 수 있는 가장 긴 교대 패턴의 길이를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 전구의 개수 이 주어진다. ()
둘째 줄에는 왼쪽 전구부터 순서대로 각 전구의 상태가 공백으로 구분되어 주어진다. 상태는 또는 이며, 은 켜진 상태, 은 꺼진 상태를 뜻한다.
출력
첫째 줄에 기계를 최대 한 번 사용해서 만들 수 있는 가장 긴 교대 패턴의 길이를 출력한다.