https://www.acmicpc.net/problem/16956
using System;
using System.Collections;
using System.Text;
class Program
{
static void Main() {
StringBuilder sb = new StringBuilder();
string[] s=Console.ReadLine().Split(' ');
int r=int.Parse(s[0]);
int c=int.Parse(s[1]);
char[,] arr=new char[r,c];
for(int i=0;i<r;i++){
string s1=Console.ReadLine();
for(int j=0;j<c;j++){
arr[i,j]=s1[j];
}
}
bool check=true;
int[] dx={0,0,1,-1};
int[] dy={1,-1,0,0};
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
if(arr[i,j]=='W'){
for(int k=0;k<4;k++){
int x=i+dx[k];
int y=j+dy[k];
if(x>=0 && x<r && y>=0 && y<c){
if(arr[x,y]=='.'){
arr[x,y]='D';
}
else if(arr[x,y]=='S'){
check=false;
Console.WriteLine(0);
return;
}
}
}
}
}
}
if(!check) Console.WriteLine(0);
else{
Console.WriteLine(1);
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
sb.Append(arr[i,j]);
}
sb.Append("\n");
}
Console.WriteLine(sb.ToString());
}
}
}