사과

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

요약
사과가 하나 있는 보드에서 회전과 대기를 반복하는 게임을 시뮬레이션하고 최종 보드를 출력한다.
난이도

보통10점 중 7점

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

문제

R×SR \times S 크기의 게임 판이 있다. 각 칸은 비어 있거나 막혀 있으며, 한 칸에는 사과가 있다. 사과는 항상 중력 방향, 즉 화면 아래쪽으로 떨어진다.

매 초마다 플레이어는 화면을 시계 방향으로 90도 돌리거나, 반시계 방향으로 90도 돌리거나, 아무것도 하지 않고 기다릴 수 있다. 화면을 돌리면 판 전체가 화면과 함께 돌아가고, 중력은 계속 화면 아래쪽을 향한다. 그다음 사과는 화면 아래쪽으로 한 칸 떨어진다. 단, 사과 바로 아래 칸이 판 안에 있고 비어 있을 때만 떨어지며, 그렇지 않으면 사과는 제자리에 머문다.

처음 판 상태와 행동 순서가 주어질 때 모든 행동을 마친 뒤의 판 상태를 출력하는 시뮬레이터를 작성하시오. 판에서 #은 막힌 칸, .은 빈 칸, J는 사과의 위치를 나타낸다.

입력

첫째 줄에 판의 행 수 RR과 열 수 SS가 주어진다. (3≤R,S≤10003 \le R, S \le 1000)

다음 RR개 줄에는 각각 정확히 SS개의 문자가 주어진다. 각 문자는 대문자 J, .(점), # 중 하나이다. 판에 J는 정확히 하나 있다.

마지막 줄에는 행동 순서를 나타내는 길이 1,000,000 이하의 문자열이 주어진다. 각 문자의 의미는 다음과 같다.

  • R: 화면을 시계 방향으로 돌린다.
  • L: 화면을 반시계 방향으로 돌린다.
  • P: 기다린다.

출력

모든 행동을 마친 뒤 화면에 보이는 방향 그대로 판을 출력한다. 최종 회전 상태에 따라 RR행 SS열 또는 SS행 RR열의 표가 된다.

예제2

  1. 예제 1

    입력
    5 3
    #..
    J..
    #..
    ..#
    ...
    RPPLPL
    
    예상 출력
    ...#.
    ..J..
    #.#..
    
  2. 예제 2

    입력
    3 3
    ...
    .J.
    ...
    P
    
    예상 출력
    ...
    ...
    .J.