페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#5405
스페셜 저지

소가 먹는 풀 (Feeding the Cows) 1초 512MB

문제

N 마리의 소가 일렬로 서있다. 각 소는 젖소(Holstein​) 혹은 황소(​Guernsey)이다.

젖소와 황소는 각기 다른 종류의 풀을 섭취하는데, 다른 종류의 풀을 같은 위치에 심을 수는 없다.

풀을 한번 심으면 해당 장소에서는 풀이 무한히 자라기에 충분히 많은 수의 소들을 먹일 수 있다.

 

모든 소는 최대 K만큼만 움직여서 풀을 먹을 수 있다. 풀을 최소한 심어서 모든 소들이 풀을 먹을 수 있게 하고자 한다.

풀을 몇 개 심으면 되고, 어디에 심으면 되는지 출력하는 프로그램을 작성하시오.


입력

첫 번째 줄에 테스트 케이스의 수 T가 입력된다 (1≤T≤10)​.

 

두 번째 줄부터 각 테스트 케이스의 첫 번째 줄에 소의 수 N과 소의 최대 이동 범위 K가 입력되고 (1≤N≤105>, 0≤K≤N−1​), 두 번째 줄에 소들의 품종 배치도가 G와 H로 이루어진 문자열로 주어진다. (G는 황소, H는 젖소를 의미한다)


출력

각 T번의 테스트케이스에 대하여 첫 번째 줄에 필요한 최소 풀의 개수, 두 번째 줄에 풀의 배치를 황소가 먹을 풀을 G로,  젖소가 먹을 풀을 H로, 그리고 아무 풀도 없는 곳을 .으로 표기한 길이 N의 문자열을 출력하시오.


예제1

입력
6

5 0
GHHGG
5 1
GHHGG
5 2
GHHGG
5 3
GHHGG
5 4
GHHGG
2 1
GH
출력
5

GHHGG
3
.GH.G
2
..GH.
2
...GH
2
...HG
2
HG

출처

USACO 2022 December Bronze

역링크 공식 문제집만