호떡 뒤집기
시간 제한2초메모리 제한1024 MB
처음에 모두 흰색인 호떡 N개를 최대 N번의 앞부분 또는 뒷부분 뒤집기로 목표하는 흑백 배열로 만들 수 있는지 판정하고, 가능하면 그 방법을 출력한다.
문제
프라이팬 위에는 개의 호떡이 일렬로 놓여 있다. 각각의 호떡은 앞면이 흰색, 뒷면이 갈색이다. 처음에 모든 호떡은 앞면이 보이는 상태이다. 이때, 호떡 요리사인 현준이는 다음 절차에 따른 작업을 최대 번 수행할 수 있다.
- 번째와 번째 호떡에 보이는 색이 같도록 정수 를 고른다.
- 번째 호떡에 보이는 색이 흰색이라면 번째부터 번째까지의 호떡을 모두 뒤집는다. 반대로 번째 호떡에 보이는 색이 갈색이라면 번째부터 번째까지의 호떡을 모두 뒤집는다.
현준이는 작업을 수행해 자신이 원하는 색깔의 호떡 배열을 만들고 싶다. 현준이가 원하는 배열을 얻을 수 있는지 판단하고, 얻을 수 있다면 그 방법 중 하나를 아무거나 찾아서 현준이에게 알려주자.
입력
첫 번째 줄에 호떡의 개수 이 주어진다.
두 번째 줄에 현준이가 원하는 색깔의 배열을 나타내는 길이 의 문자열 가 주어진다. 가 W라면 번째 호떡을 앞면이 보이게, B라면 번째 호떡을 뒷면이 보이게 만들어야 한다.
출력
현준이가 원하는 색깔의 배열을 만들 수 있다면, 첫 번째 줄에 작업 횟수 를 출력한다.
그다음 줄부터 줄에 걸쳐 작업에 대한 정보를 출력한다. 그 중 번째 줄에는 번째 작업에서 선택한 의 값을 출력한다.
가능한 작업 순서가 여러 개라면 그중 아무거나 출력한다. 또한, 의 값을 최소화하지 않아도 됨에 유의하라.
현준이가 원하는 색깔의 배열을 만들 수 없다면, 첫 번째 줄에 -1을 출력한다.