시간 제한메모리 제한제출정답맞힌 사람정답 비율
0.5 초 512 MB63211836.735%

문제

각각 칸이 'A', 'X', 'O' 셋 중 하나로 주어진 $N \times M$ 보드가 주어진다.  플레이어는 'A'로 주어진 칸 중 하나에서 시작할 수 있으며, 처음 $1 \times 1$ 크기의 말로 시작해 매 턴 다음 행동들을 순서대로 수행한다. 매 턴 두 행동을 모두 주어진 순서대로 수행해야 한다.

  1. 상하좌우 중 한 방향으로 말을 길이 1만큼 늘리기. 말을 늘릴 때 기존 말의 위치는 변하지 않고 해당 방향으로 직사각형 모양으로 크기가 커진다.
  2. 상하좌우 중 한 방향으로 말을 한 칸 이동하기.

예를 들어 가로 길이가 4, 세로 길이가 4인 말을 위쪽으로 길이 1만큼 늘리면 아래 그림과 같이 변한다.

행동을 수행하면서 플레이어의 말이 보드 밖이나 `X'를 포함하게 된다면 수행하지 못하고 종료한다.

플레이어가 원하는 'A'에서 시작하여 자유롭게 행동하여 0번 이상의 턴을 마친 뒤 플레이어의 말이 도달하거나 포함할 수 있는 모든 칸을 'Y'로, 이외 모든 칸을 'N'으로 표시하여 출력하여라. 만약 행동 1을 수행한 뒤 행동 2에서 'X'를 만난다면 행동 1에서 말이 포함한 칸은 도달하거나 포함한 것으로 취급하지 않는다.

입력

첫째 줄에 $N, M \, (1 \leq N, M \leq 50)$ 이 주어진다.

이후 $N$개의 줄에 걸쳐 $M$칸의 정보가 'A', 'X', 'O' 셋 중 하나로 주어진다. 출발 지점 'A'는 적어도 하나 주어진다.

출력

$N$줄에 걸쳐 각각 $M$칸을 플레이어가 도달하거나 포함할 수 있다면 'Y', 없다면 'N'으로 바꿔 출력한다.

예제 입력 1

8 8
OOOAOOXO
OOXOOOXA
OOXOOOXX
XXXOXXXO
OOXOOOXO
OOXOOOXO
OOOOOOXA
OOOAOOXO

예제 출력 1

YYYYYYNN
NNNYYYNY
NNNYYYNN
NNNYNNNY
YYNYYYNY
YYNYYYNY
YYYYYYNY
YYYYYYNY

출처

University > POSTECH > 2021 POSTECH Programming Contest I번