만드는 중입니다

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

거울 미로

면접 대비

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

요약
거울이 놓인 격자에서 레이저 빔이 모든 거울에 닿는 테두리 발사 위치를 모두 찾습니다.
난이도

보통10점 중 4점

유형
시뮬레이션, 완전 탐색, 행렬
정답자
아직 제출이 없습니다

문제

격자는 RR개의 행과 CC개의 열로 이루어져 있다. 행은 북쪽에서 남쪽으로 11부터 RR까지, 열은 서쪽에서 동쪽으로 11부터 CC까지 번호가 붙는다. 격자의 모든 칸은 같은 크기의 정사각형이다. rr행 cc열의 칸은 (r,c)(r, c)로 표시한다. 각 칸은 비어 있거나, 두 대각선 중 하나를 따라 놓인 거울을 가진다. 타입 11 거울은 칸의 남서쪽 모서리에서 북동쪽 모서리까지 이어지고, 타입 22 거울은 다른 대각선을 따라 놓인다.

거울은 반사 법칙을 따른다. 입사각과 반사각이 같다. 타입 11 거울은 북, 남, 서, 동에서 들어온 빛을 각각 서, 동, 북, 남으로 보낸다. 타입 22 거울은 북, 남, 서, 동에서 들어온 빛을 각각 동, 서, 남, 북으로 보낸다.

격자 바깥에 레이저를 놓아서 빔이 모든 거울에 닿도록 하려 한다. 레이저를 놓을 수 있는 위치는 2⋅(R+C)2 \cdot (R + C)개이다.

  • 북쪽 면의 cc열(1≤c≤C1 \le c \le C)에서 남쪽으로 쏜다.
  • 남쪽 면의 cc열(1≤c≤C1 \le c \le C)에서 북쪽으로 쏜다.
  • 동쪽 면의 rr행(1≤r≤R1 \le r \le R)에서 서쪽으로 쏜다.
  • 서쪽 면의 rr행(1≤r≤R1 \le r \le R)에서 동쪽으로 쏜다.

빔이 모든 거울에 닿는 레이저 위치를 모두 구하라.

입력

첫째 줄에 두 정수 RR과 CC가 주어진다(1≤R,C≤2001 \le R, C \le 200).

이어지는 RR개의 줄에는 길이가 CC인 문자열 SrS_r이 주어진다. SrS_r의 cc번째 문자는 칸 (r,c)(r, c)를 나타낸다. 빈 칸은 ., 타입 11 거울은 /, 타입 22 거울은 \로 표시된다. 격자에는 거울이 적어도 하나 있다.

출력

레이저 위치의 개수 kk를 정수 하나로 출력한다. k>0k > 0이면 위치를 나타내는 문자열 kk개를 공백으로 구분하여 출력한다. 순서는 상관없다. 각 문자열은 문자 하나와 그 바로 뒤에 붙은 정수로 이루어지며, 그 사이에 공백은 없다. 문자는 레이저를 놓은 면에 따라 N, S, E, W 중 하나이다. N과 S 뒤의 정수는 열 번호이고, E와 W 뒤의 정수는 행 번호이다.

예제3

  1. 예제 1

    입력
    4 4
    .//.
    .\\.
    .\/.
    ....
    
    예상 출력
    2
    N3 W2
    
  2. 예제 2

    입력
    4 6
    ./..\.
    .\...\
    ./../\
    ......
    
    예상 출력
    2
    E3 S2
    
  3. 예제 3

    입력
    4 4
    ....
    ./\.
    .\/.
    ....
    
    예상 출력
    0