아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

INK

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

요약
격자 위 캐릭터가 이동하고 잉크를 모은 뒤 점프할 때마다 맨해튼 거리 안의 장애물을 칠하는 과정을 시뮬레이션하고 최종 격자를 출력한다.
난이도

보통10점 중 4점

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

문제

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

스테이지의 레벨은 N×NN \times N 크기의 그리드로 표현할 수 있다. (y,x)(y, x)는 yy행 xx열에 위치한 칸을 의미하며, 칸은 항상 빈칸이거나 장애물 중 하나이다. 스테이지의 레벨에서 게임을 시작하면 플레이어는 스테이지에서 커맨드를 입력하여 사각형을 조종할 수 있다. 스테이지에서 플레이어는 커맨드를 총 KK번 입력한다. 아래는 커맨드에 대한 설명이다.

  • 이동 커맨드

    • 대문자 알파벳 UU, DD, LL, RR로 4가지이고 각각 상, 하, 좌, 우 방향으로 11칸 이동함을 의미한다.
    • 이동 커맨드에 따라 움직였을 때 사각형이 스테이지 밖으로 벗어나거나 장애물과 겹치는 경우 해당 커맨드는 무시된다.
  • 잉크 충전 커맨드

    • 잉크 충전 커맨드는 소문자 알파벳 jj이다.
    • 잉크 충전 커맨드를 입력받으면 사각형이 가지고 있는 잉크의 양이 11 증가한다.
    • 게임 시작 시 사각형이 가지고 있는 잉크의 양은 00이다.
  • 점프 커맨드

    • 점프 커맨드는 대문자 알파벳 JJ이다.

    • 점프 커맨드를 입력받으면 사각형이 제자리에서 점프하면서 잉크가 흩뿌려지며, 이때 잉크의 양은 사각형이 가지고 있는 잉크의 양과 같다.

      • 잉크의 색상이 c_ic\_i이고 잉크의 양이 m_im\_i인 잉크가 (y_i,x_i)(y\_i, x\_i) 지점에서 흩뿌려졌을 때 ∣y_i−a∣+∣x_i−b∣≤m_i|y\_i-a|+|x\_i-b| \le m\_i를 만족하는 (a,b)(a, b) 칸이 장애물 칸이라면 c_ic\_i로 칠해진다.
      • 만약 장애물 칸이 다른 색상으로 이미 칠해져 있다면, 나중에 닿은 잉크의 색상으로 덮어씌워 칠해진다.
    • 점프한 직후 사각형이 가지고 있는 잉크의 양은 00이 된다.

잉크의 색상은 점프 커맨드 입력 횟수와 잉크 문자열에 의해 결정된다.

  • 잉크 문자열

    • 잉크 문자열은 알파벳 대문자로 이루어진 길이가 II인 문자열이다.
    • t×I+dt \times I + d번째 점프할 때의 잉크의 색상은 잉크 문자열의 dd번째 문자가 된다. (t(t는 음이 아닌 정수;; 1≤d≤I)1 \le d \le I)
      • 예를 들어 11번째 점프는 11번째 문자, 22번째 점프는 22번째 문자, II번째 점프는 II번째 문자, I+1I + 1번째 점프는 11번째 문자, I+2I + 2번째 점프는 22번째 문자가 된다.

잉크 문자열, 초기 스테이지의 레벨 모습, 플레이어가 입력한 커맨드를 입력받아 커맨드를 모두 실행한 후의 스테이지 모습을 출력하는 프로그램을 작성해 보자.

입력

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

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

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

마지막 줄에는 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