INK
시간 제한1초메모리 제한1024 MB
N x N 격자에서 흰 사각형을 K개의 명령으로 움직이고, 점프할 때마다 맨해튼 거리 안의 장애물을 잉크 색으로 칠한 최종 격자를 구합니다.
문제
INK는 하얀 사각형을 조종해 다양한 위험 요소를 피하고 도착 지점에 도달하는 플랫포머 퍼즐 게임이다. 플레이어가 조종하는 하얀 사각형은 점프할 때마다 다양한 색의 잉크를 흩뿌린다. 흩뿌려진 잉크가 투명한 장애물에 닿으면 그 장애물이 염색된다. 염색된 뒤로는 플레이어가 그 장애물을 볼 수 있다.
스테이지의 레벨은 크기의 그리드로 나타낸다. 는 행 열에 있는 칸을 뜻하며, 각 칸은 빈칸이거나 장애물 중 하나이다. 플레이어는 스테이지에서 커맨드를 입력해 사각형을 조종한다. 커맨드는 총 번 입력한다. 커맨드는 다음과 같다.
- 이동 커맨드: 대문자 알파벳
U,D,L,R이 있으며, 각각 상, 하, 좌, 우로 1칸 이동한다. 이동한 위치가 스테이지 밖이거나 장애물과 겹치면 그 커맨드는 무시된다. - 잉크 충전 커맨드: 소문자 알파벳
j이다. 입력하면 사각형이 가진 잉크의 양이 1 증가한다. 게임 시작 시 잉크의 양은 0이다. - 점프 커맨드: 대문자 알파벳
J이다. 입력하면 사각형이 제자리에서 점프하며 잉크를 흩뿌린다. 이때 흩뿌리는 잉크의 양은 사각형이 가진 잉크의 양과 같다. 점프한 직후 사각형의 잉크 양은 0이 된다.
색상이 이고 양이 인 잉크가 지점에서 흩뿌려졌을 때, 를 만족하는 칸 가 장애물이면 그 장애물은 색으로 칠해진다. 이미 다른 색으로 칠해진 장애물이라면 나중에 닿은 잉크의 색으로 다시 칠해진다.
잉크의 색은 점프 횟수와 잉크 문자열에 따라 정해진다. 잉크 문자열은 길이가 인 대문자 알파벳 문자열이다. 번째 점프의 잉크 색은 잉크 문자열의 번째 문자가 된다. (는 음이 아닌 정수, ) 예를 들어 1번째 점프는 1번째 문자, 2번째 점프는 2번째 문자, 번째 점프는 번째 문자, 번째 점프는 1번째 문자, 번째 점프는 2번째 문자가 된다.
입력
첫 번째 줄에 정수 , , 가 공백으로 구분되어 주어진다. ()
두 번째 줄에는 잉크 문자열이 주어진다.
세 번째 줄부터 개의 줄에 걸쳐 크기의 스테이지가 주어진다. 사각형은 @, 빈칸은 ., 장애물은 #으로 주어진다. 사각형은 항상 1개만 주어진다.
마지막 줄에는 개의 커맨드가 공백 없이 주어진다.
출력
개의 줄에 걸쳐 크기의 최종 스테이지 모습을 출력한다.
사각형은 @로, 빈칸은 ., 염색되지 않은 장애물은 #로, 염색된 장애물은 염색에 쓰인 잉크 색의 대문자 알파벳으로 출력한다.