만드는 중입니다

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

INK

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

요약
N x N 격자에서 흰 사각형을 K개의 명령으로 움직이고, 점프할 때마다 맨해튼 거리 안의 장애물을 잉크 색으로 칠한 최종 격자를 구합니다.
난이도

쉬움10점 중 3점

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

문제

INK는 하얀 사각형을 조종해 다양한 위험 요소를 피하고 도착 지점에 도달하는 플랫포머 퍼즐 게임이다. 플레이어가 조종하는 하얀 사각형은 점프할 때마다 다양한 색의 잉크를 흩뿌린다. 흩뿌려진 잉크가 투명한 장애물에 닿으면 그 장애물이 염색된다. 염색된 뒤로는 플레이어가 그 장애물을 볼 수 있다.

스테이지의 레벨은 N×NN \times N 크기의 그리드로 나타낸다. (y,x)(y, x)는 yy행 xx열에 있는 칸을 뜻하며, 각 칸은 빈칸이거나 장애물 중 하나이다. 플레이어는 스테이지에서 커맨드를 입력해 사각형을 조종한다. 커맨드는 총 KK번 입력한다. 커맨드는 다음과 같다.

  • 이동 커맨드: 대문자 알파벳 U, D, L, R이 있으며, 각각 상, 하, 좌, 우로 1칸 이동한다. 이동한 위치가 스테이지 밖이거나 장애물과 겹치면 그 커맨드는 무시된다.
  • 잉크 충전 커맨드: 소문자 알파벳 j이다. 입력하면 사각형이 가진 잉크의 양이 1 증가한다. 게임 시작 시 잉크의 양은 0이다.
  • 점프 커맨드: 대문자 알파벳 J이다. 입력하면 사각형이 제자리에서 점프하며 잉크를 흩뿌린다. 이때 흩뿌리는 잉크의 양은 사각형이 가진 잉크의 양과 같다. 점프한 직후 사각형의 잉크 양은 0이 된다.

색상이 cic_i이고 양이 mim_i인 잉크가 (yi,xi)(y_i, x_i) 지점에서 흩뿌려졌을 때, ∣yi−a∣+∣xi−b∣≤mi|y_i-a|+|x_i-b| \le m_i를 만족하는 칸 (a,b)(a, b)가 장애물이면 그 장애물은 cic_i 색으로 칠해진다. 이미 다른 색으로 칠해진 장애물이라면 나중에 닿은 잉크의 색으로 다시 칠해진다.

잉크의 색은 점프 횟수와 잉크 문자열에 따라 정해진다. 잉크 문자열은 길이가 II인 대문자 알파벳 문자열이다. t×I+dt \times I + d번째 점프의 잉크 색은 잉크 문자열의 dd번째 문자가 된다. (tt는 음이 아닌 정수, 1≤d≤I1 \le d \le I) 예를 들어 1번째 점프는 1번째 문자, 2번째 점프는 2번째 문자, II번째 점프는 II번째 문자, I+1I + 1번째 점프는 1번째 문자, I+2I + 2번째 점프는 2번째 문자가 된다.

입력

첫 번째 줄에 정수 II, NN, KK가 공백으로 구분되어 주어진다. (1≤I,N,K≤1001 \le I, N, K \le 100)

두 번째 줄에는 잉크 문자열이 주어진다.

세 번째 줄부터 NN개의 줄에 걸쳐 N×NN \times N 크기의 스테이지가 주어진다. 사각형은 @, 빈칸은 ., 장애물은 #으로 주어진다. 사각형은 항상 1개만 주어진다.

마지막 줄에는 KK개의 커맨드가 공백 없이 주어진다.

출력

NN개의 줄에 걸쳐 N×NN \times N 크기의 최종 스테이지 모습을 출력한다.

사각형은 @로, 빈칸은 ., 염색되지 않은 장애물은 #로, 염색된 장애물은 염색에 쓰인 잉크 색의 대문자 알파벳으로 출력한다.

예제3

  1. 예제 1

    입력
    3 4 12
    RGB
    .@..
    .##.
    .##.
    ....
    jJRRJjjDDjDJ
    
    예상 출력
    ....
    .RB.
    .BB.
    ...@
    
  2. 예제 2

    입력
    7 5 17
    UTILCUP
    .@...
    .#.#.
    ...#.
    ##.##
    ##...
    JjjUUJRJLLJJjjjjJ
    
    예상 출력
    @....
    .U.U.
    ...#.
    UU.##
    U#...
    
  3. 예제 3

    입력
    4 2 10
    ABCD
    @#
    ##
    JJJJDJjjjJ
    
    예상 출력
    @B
    BB