만드는 중입니다

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

기울임 타일 퍼즐

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

요약
n×m 격자의 흰색과 검은색 타일을 k번 기울이는 과정을 시뮬레이션하고 마지막 상태를 출력합니다.
난이도

보통10점 중 6점

유형
시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

Bajtazar는 n×mn \times m 칸으로 이루어진 직사각형 모양의 퍼즐을 가지고 논다. 각 칸은 비어 있거나, 흰색 또는 검은색 타일을 하나 가진다.

한 번의 움직임에서 퍼즐을 직사각형의 변과 평행한 네 방향 중 하나로 기울일 수 있다. 그러면 모든 타일이 그 방향으로 끝까지 미끄러진다. 타일은 틀 밖으로 나가지 않고, 서로 겹치지도 않는다.

Bajtazar가 수행한 움직임의 순서가 주어진다. 마지막 움직임을 수행한 뒤의 퍼즐 상태를 출력하라.

입력

첫 줄에 높이 nn과 너비 mm이 주어진다 (1≤n,m≤5001 \le n, m \le 500). 다음 nn줄에는 초기 상태가 위에서 아래로, 각 줄은 왼쪽에서 오른쪽으로 mm개의 문자로 주어진다. 각 문자는 빈 칸을 뜻하는 '.', 흰색 타일 'B', 검은색 타일 'C' 중 하나다.

다음 줄에는 Bajtazar가 수행한 움직임의 횟수 kk (1≤k≤5000001 \le k \le 500000)가 주어진다. 마지막 줄에는 이 움직임을 나타내는 길이 kk의 문자열이 주어진다. 'G'는 위, 'D'는 아래, 'L'은 왼쪽, 'P'는 오른쪽 움직임이다.

출력

최종 상태를 초기 상태와 같은 형식으로 출력한다. nn줄을 출력하며, 각 줄은 '.', 'B', 'C'로 이루어진 mm개의 문자이다.

힌트

첫 번째 움직임 'G'로 모든 타일이 위로 미끄러져 상태는 다음과 같아진다:

.BCC.
...B.
.....
.....

두 번째 움직임 'L'로 타일이 왼쪽으로 미끄러진다:

BCC..
B....
.....
.....

세 번째 움직임 'P'로 타일이 오른쪽으로 미끄러지면서 최종 상태가 된다.

예제1

  1. 예제 1

    입력
    4 5
    .....
    .B.C.
    ..C..
    ...B.
    3
    GLP
    
    예상 출력
    ..BCC
    ....B
    .....
    .....