만드는 중입니다

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

소에게 풀 주기

면접 대비

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

요약
각 소가 K칸 안에 같은 품종의 풀밭을 갖도록 최소 개수의 풀밭을 놓고, 그 배치 하나를 출력합니다.
난이도

보통10점 중 5점

유형
그리디, 구현
정답자
아직 제출이 없습니다

문제

농부 존은 NN마리(1≤N≤1051 \le N \le 10^5)의 소를 기른다. 각 소의 품종은 Guernsey 또는 Holstein이다. 소들은 위치 11부터 NN까지 일렬로 서 있다.

소들이 배고파서 농부 존은 위치 11부터 NN 중 일부에 풀밭을 조성한다. Guernsey와 Holstein은 선호하는 풀이 다르다. 위치에 풀을 심는다면 Guernsey용 풀이나 Holstein용 풀 중 하나여야 하며, 같은 위치에 두 종류를 함께 심을 수는 없다. 각 풀밭은 맞는 품종의 소를 무제한으로 먹일 수 있다.

각 소는 풀밭에 닿기 위해 최대 KK(0≤K≤N−10 \le K \le N-1)칸까지 움직일 수 있다. 모든 소에게 먹이를 주는 데 필요한 풀밭의 최소 개수를 구하라. 또한 그 최소 개수를 사용하는 풀밭 배치를 하나 출력하라. 조건을 만족하는 배치라면 어떤 것이든 정답이다.

입력

첫 줄에 테스트 케이스의 수 TT(1≤T≤101 \le T \le 10)가 주어진다. 각 테스트 케이스는 NN과 KK가 적힌 줄로 시작한다. 다음 줄에는 길이 NN의 문자열이 주어지며, ii번째 문자는 ii번째 소의 품종이다. G는 Guernsey, H는 Holstein을 뜻한다.

출력

각 테스트 케이스마다 두 줄을 출력한다. 첫 줄에는 모든 소에게 먹이를 주는 데 필요한 풀밭의 최소 개수를 출력한다. 둘째 줄에는 길이 NN의 문자열을 출력한다. ii번째 문자는 위치 ii에 풀밭이 없으면 '.', Guernsey용 풀밭이면 'G', Holstein용 풀밭이면 'H'이다. 최소 개수의 풀밭으로 모든 소에게 먹이를 주는 배치라면 어떤 것이든 허용된다.

힌트

최소 개수의 풀밭으로 조건을 만족하는 배치가 여러 개인 경우가 있다. 예를 들어 네 번째 테스트 케이스에서는 다음도 정답으로 인정된다.

.GH..

이 배치는 2번 위치에 Guernsey용 풀밭, 3번 위치에 Holstein용 풀밭을 둔다. 풀밭 수가 최적이며, 모든 소가 선호하는 풀밭에서 3칸 이내에 있다.

예제1

  1. 예제 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