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

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

박테리아

면접 대비

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

요약
각 박테리아가 자기 행렬에서 읽은 숫자만큼 회전하며 격자를 움직일 때, 모든 박테리아가 함정 칸에 함께 모이는 시각을 구한다.
난이도

보통10점 중 6점

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

문제

NN행 MM열로 나뉜 실험판이 있다. 가장 위쪽 행이 11번, 가장 아래쪽 행이 NN번이고, 가장 왼쪽 열이 11번, 가장 오른쪽 열이 MM번이다.

이 실험판 위에 지능이 있는 박테리아 KK마리를 올려놓는다. 각 박테리아는 지정된 칸에서 시작하며, 위·아래·왼쪽·오른쪽 중 한 방향을 바라보고 있다. 박테리아는 매 초마다 아래 동작을 순서대로 한 번씩 수행한다.

  1. 현재 있는 칸에 적힌 숫자 XX를 읽는다. 이 숫자는 박테리아마다 다르며, 각 박테리아는 자신에게 해당하는 숫자를 읽는다.
  2. 시계 방향으로 90∘90^\circ씩 XX번 회전한다.
  3. 바라보는 방향의 칸이 실험판 밖이면, 180∘180^\circ 회전한다.
  4. 바라보는 칸으로 한 칸 이동한다.

실험판의 어떤 한 칸에는 덫이 설치되어 있다. 박테리아를 처음 올려놓은 상태를 11초라고 하자. 매 초가 시작될 때 먼저 모든 박테리아의 위치를 확인한다. 이때 모든 박테리아가 덫이 설치된 칸에 함께 있으면 그 즉시 모두 덫에 걸려 죽고, 그 시각이 답이 된다. 그렇지 않으면 모든 박테리아가 위 11~44번 동작을 동시에 한 번씩 수행한 뒤 다음 초로 넘어간다.

모든 박테리아가 죽는 시각을 초 단위로 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NN, MM, KK가 주어진다. (3≤N,M≤503 \le N, M \le 50, 1≤K≤51 \le K \le 5)

둘째 줄에 덫이 설치된 칸의 행 번호와 열 번호가 주어진다.

그다음 11번 박테리아부터 KK번 박테리아까지 차례대로 정보가 주어진다. 각 박테리아의 정보는 두 부분으로 이루어진다.

  • 첫 줄: 시작 칸의 행 XiX_i, 열 YiY_i와 바라보는 방향 CiC_i가 주어진다. CiC_i는 위쪽 U, 오른쪽 R, 아래쪽 D, 왼쪽 L 중 하나이다.
  • 다음 NN개의 줄: N×MN \times M 크기의 행렬이 주어진다. 각 원소는 00부터 99까지의 숫자이며, 박테리아 ii가 칸 (x,y)(x, y)에 있을 때 읽는 숫자 XX를 뜻한다.

출력

모든 박테리아가 죽는 시각을 초 단위로 첫째 줄에 출력한다. 박테리아가 영원히 모두 죽지 않는다면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    3 3 1
    2 2
    1 1 R
    010
    000
    000
    
    예상 출력
    3
    
  2. 예제 2

    입력
    3 4 2
    2 2
    3 4 R
    2327
    6009
    2112
    3 2 R
    1310
    2101
    1301
    
    예상 출력
    8
    
  3. 예제 3

    입력
    4 4 3
    4 3
    1 1 U
    1001
    0240
    3322
    2327
    1 3 L
    9521
    2390
    3020
    2421
    2 2 D
    3397
    2013
    1102
    7302
    
    예상 출력
    296