모두 앞을 보게 하기
면접 대비시간 제한1초메모리 제한128 MB
길이 K인 연속한 소 구간을 뒤집는 연산만으로 모든 소를 앞을 향하게 만들 때, 필요한 연산 횟수가 가장 적은 K를 고르고 그 횟수를 출력한다.
문제
Farmer John이 소 마리 ()를 한 줄로 세웠습니다. 일부 소는 앞을 보고 있지만 나머지는 뒤를 보고 있으며, John은 모든 소가 앞을 보게 만들고 싶습니다.
John에게는 소의 방향을 자동으로 뒤집는 기계가 있습니다. 할인 모델을 산 탓에 이 기계는 하나의 값 ()로 영구히 고정되어 있습니다. 기계를 한 번 사용할 때마다 연속한 소 마리의 방향이 반대로 바뀝니다. 앞을 보던 소는 뒤를, 뒤를 보던 소는 앞을 보게 되며, 각 소의 위치는 그대로 유지됩니다. 기계는 마리보다 적은 수에는 작동할 수 없으므로, 줄 안에 완전히 들어가는 정확히 마리의 연속 구간에만 사용할 수 있습니다.
John은 시작하기 전에 하나의 고정된 값을 정해야 합니다. 기계로 모든 소가 앞을 보게 만드는 데 필요한 조작 횟수가 최소가 되도록 를 고르고, 그때의 최소 조작 횟수를 이라 합시다. 같은 최소 을 갖는 가 여러 개라면 그중 가장 작은 를 고릅니다.
입력
- 첫째 줄: 정수 .
- 둘째 줄부터 번째 줄까지: 번째 줄에는 문자 하나
F또는B가 주어지며, 이는 번 소가 앞(F)을 보는지 뒤(B)를 보는지를 나타냅니다.
출력
공백으로 구분된 두 정수 와 을 출력합니다. 는 조작 횟수를 최소로 만드는 값(동점이면 가장 작은 값)이고, 은 그 에 대한 최소 조작 횟수입니다.
힌트
일곱 마리의 소가 각각 뒤, 뒤, 앞, 뒤, 앞, 뒤, 뒤를 보고 있다고 합시다.
이면 기계를 세 번 사용해야 합니다. 소 , 그다음 , 마지막으로 을 뒤집으면 모든 소가 앞을 보게 됩니다. 아래 그림은 세 번의 조작이 적용되는 동안 각 소의 방향 변화를 보여 줍니다. >는 곧 뒤집힐 소를 나타냅니다.
B > F F F
B > F F F
F > B > F F
B B > F F
F F > B > F
B B B > F
B B B > F
이 줄에서는 어떤 고정된 로도 세 번보다 적게 끝낼 수 없으므로, 답은 , 입니다.