제식 훈련 2

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

요약
N×M 격자에 동서남북 방향이 주어질 때, 각 행의 동서와 각 열의 남북이 조건을 만족하도록 바꿔야 하는 칸 수의 최솟값을 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

제식 훈련을 위해 연병장에 총 N×MN \times M명의 훈련병이 오와 열을 맞추어 NN행 MM열로 배치되어 있다. (i,j)(i, j)는 ii행 jj열의 위치를 의미한다 (1≤i≤N,1≤j≤M1 \leq i \leq N, 1 \leq j \leq M). 각 훈련병은 동(E), 서(W), 남(S), 북(N) 네 방향 중 하나를 바라보고 있다.

이제 모든 훈련병이 동시에 자신이 바라보는 방향으로 이동하는 훈련을 진행하려고 한다. 이때 훈련병 간의 충돌을 방지하기 위해, 다음 조건들을 반드시 만족해야 한다.

모든 훈련병 (i,j)(i, j)에 대해,

  • (i,j)(i, j)의 훈련병이 동쪽(E)을 바라본다면, j<k≤Mj < k \leq M를 만족하는 모든 정수 kk에 대해 (i,k)(i, k)의 훈련병 또한 동쪽(E)을 바라보아야 한다.
  • (i,j)(i, j)의 훈련병이 서쪽(W)을 바라본다면, 1≤k<j1 \leq k < j를 만족하는 모든 정수 kk에 대해 (i,k)(i, k)의 훈련병 또한 서쪽(W)을 바라보아야 한다.
  • (i,j)(i, j)의 훈련병이 남쪽(S)을 바라본다면, i<k≤Ni < k \leq N를 만족하는 모든 정수 kk에 대해 (k,j)(k, j)의 훈련병 또한 남쪽(S)을 바라보아야 한다.
  • (i,j)(i, j)의 훈련병이 북쪽(N)을 바라본다면, 1≤k<i1 \leq k < i를 만족하는 모든 정수 kk에 대해 (k,j)(k, j)의 훈련병 또한 북쪽(N)을 바라보아야 한다.

현재 훈련병들의 방향 배치가 주어졌을 때, 조건을 만족시키기 위해 방향을 변경해야 하는 훈련병 수의 최솟값을 구하여라.

입력

첫째 줄에 NN과 MM이 공백으로 구분되어 주어진다. (1≤N,M≤2,0001 \leq N, M \leq 2,000)

다음 NN개의 줄에 걸쳐 각 행의 훈련병들이 바라보는 방향을 나타내는 MM개의 문자가 공백 없이 주어진다. 이때 주어지는 문자는 E, W, S, N 중 하나이며, 각각 동쪽, 서쪽, 남쪽, 북쪽을 뜻한다.

출력

첫째 줄에 조건을 만족시키기 위해 방향을 바꿔야 하는 훈련병 수의 최솟값을 출력한다.

예제1

  1. 예제 1

    입력
    2 2
    NW
    ES
    
    예상 출력
    2