아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

모두 앞을 보게 하기

면접 대비

시간 제한1초메모리 제한128 MB

요약
길이 K인 연속한 소 구간을 뒤집는 연산만으로 모든 소를 앞을 향하게 만들 때, 필요한 연산 횟수가 가장 적은 K를 고르고 그 횟수를 출력한다.
난이도

보통10점 중 6점

유형
그리디, 시뮬레이션, 누적 합, 완전 탐색
정답자
아직 제출이 없습니다

문제

Farmer John이 소 NN마리 (1≤N≤50001 \le N \le 5000)를 한 줄로 세웠습니다. 일부 소는 앞을 보고 있지만 나머지는 뒤를 보고 있으며, John은 모든 소가 앞을 보게 만들고 싶습니다.

John에게는 소의 방향을 자동으로 뒤집는 기계가 있습니다. 할인 모델을 산 탓에 이 기계는 하나의 값 KK (1≤K≤N1 \le K \le N)로 영구히 고정되어 있습니다. 기계를 한 번 사용할 때마다 연속한 소 KK마리의 방향이 반대로 바뀝니다. 앞을 보던 소는 뒤를, 뒤를 보던 소는 앞을 보게 되며, 각 소의 위치는 그대로 유지됩니다. 기계는 KK마리보다 적은 수에는 작동할 수 없으므로, 줄 안에 완전히 들어가는 정확히 KK마리의 연속 구간에만 사용할 수 있습니다.

John은 시작하기 전에 하나의 고정된 KK 값을 정해야 합니다. 기계로 모든 소가 앞을 보게 만드는 데 필요한 조작 횟수가 최소가 되도록 KK를 고르고, 그때의 최소 조작 횟수를 MM이라 합시다. 같은 최소 MM을 갖는 KK가 여러 개라면 그중 가장 작은 KK를 고릅니다.

입력

  • 첫째 줄: 정수 NN.
  • 둘째 줄부터 N+1N+1번째 줄까지: i+1i+1번째 줄에는 문자 하나 F 또는 B가 주어지며, 이는 ii번 소가 앞(F)을 보는지 뒤(B)를 보는지를 나타냅니다.

출력

공백으로 구분된 두 정수 KK와 MM을 출력합니다. KK는 조작 횟수를 최소로 만드는 값(동점이면 가장 작은 값)이고, MM은 그 KK에 대한 최소 조작 횟수입니다.

힌트

일곱 마리의 소가 각각 뒤, 뒤, 앞, 뒤, 앞, 뒤, 뒤를 보고 있다고 합시다.

K=3K = 3이면 기계를 세 번 사용해야 합니다. 소 (1,2,3)(1,2,3), 그다음 (3,4,5)(3,4,5), 마지막으로 (5,6,7)(5,6,7)을 뒤집으면 모든 소가 앞을 보게 됩니다. 아래 그림은 세 번의 조작이 적용되는 동안 각 소의 방향 변화를 보여 줍니다. >는 곧 뒤집힐 소를 나타냅니다.

     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

이 줄에서는 어떤 고정된 KK로도 세 번보다 적게 끝낼 수 없으므로, 답은 K=3K = 3, M=3M = 3입니다.

예제3

  1. 예제 1

    입력
    7
    B
    B
    F
    B
    F
    B
    B
    
    예상 출력
    3 3
    
  2. 예제 2

    입력
    1
    F
    
    예상 출력
    1 0
    
  3. 예제 3

    입력
    1
    B
    
    예상 출력
    1 1