만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

호떡 뒤집기

시간 제한2초메모리 제한1024 MB

요약
팬케이크 N개의 목표 W/B 배열이 같은 색 인접 쌍에서 앞부분이나 뒷부분을 뒤집어 만들어질 수 있는지 판별하고, 가능하면 연산 순서를 출력합니다.
난이도

보통10점 중 7점

유형
시뮬레이션, 문자열, 그리디
정답자
아직 제출이 없습니다

문제

프라이팬 위에 호떡 NN개가 일렬로 놓여 있다. 각 호떡은 앞면이 흰색, 뒷면이 갈색이다. 처음에는 모든 호떡의 앞면이 보인다. 호떡 요리사 현준이는 아래 절차로 작업을 최대 NN번 수행할 수 있다.

  1. xx번째 호떡과 (x+1)(x+1)번째 호떡에 보이는 색이 같도록 정수 xx를 고른다. (1≤x≤N−11 \le x \le N-1)
  2. xx번째 호떡에 보이는 색이 흰색이면 1번째부터 xx번째까지의 호떡을 모두 뒤집는다. 갈색이면 (x+1)(x+1)번째부터 NN번째까지의 호떡을 모두 뒤집는다.

현준이는 작업을 수행해 원하는 색 배열을 만들려고 한다. 원하는 배열을 얻을 수 있는지 판단하고, 얻을 수 있다면 방법 중 하나를 찾아 알려 주자.

입력

첫 번째 줄에 호떡의 개수 NN이 주어진다. (1≤N≤500 0001 \le N \le 500\,000)

두 번째 줄에 현준이가 원하는 색 배열을 나타내는 길이 NN의 문자열 SS가 주어진다. SiS_i가 W이면 ii번째 호떡의 앞면이 보여야 하고, B이면 뒷면이 보여야 한다.

출력

원하는 배열을 만들 수 있으면 첫 번째 줄에 작업 횟수 KK를 출력한다. (0≤K≤N0 \le K \le N)

다음 KK줄에는 각 작업에서 고른 xx의 값을 순서대로 한 줄에 하나씩 출력한다. (1≤x≤N−11 \le x \le N-1) 작업 순서가 여러 개라면 그중 아무거나 출력한다. KK의 값을 최소화할 필요는 없다.

만들 수 없으면 첫 번째 줄에 -1을 출력한다.

예제2

  1. 예제 1

    입력
    4
    WBBW
    
    예상 출력
    2
    1
    3
    
  2. 예제 2

    입력
    1
    B
    
    예상 출력
    -1