📍 문제 설명
💡 접근
예제 출력이 그렇게 안나와있어서 늑대가 상하좌우로 무한정 이동할 수 있을거라고 생각했는데, 그냥 늑대 상하좌우로 울타리 쳐주면 되는 문제였다.
👩💻 코드
import java.util.*;
public class Main {
static int n, m, h, k, answer,cnt;
static char[][] board,dis;
static int[] ch,pm, combi;
static boolean[] visited;
static boolean flag = true;
static int[] dx = {-1,1,0,0};
static int[] dy = {0,0,-1,1};
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
n = kb.nextInt(); //목장의 크기
m = kb.nextInt(); //목장의 크기
kb.nextLine();
board = new char[n][m];
for(int i = 0; i < n; i++) {
String s = kb.nextLine();
for(int j = 0; j < m; j++) {
board[i][j] = s.charAt(j);
}
}
//늑대의 상하좌우 확인하여 울타리로 감싸기
T.solution(0,0);
if(flag) {
System.out.println(1);
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
System.out.print(board[i][j]);
}
System.out.println();
}
}
else System.out.println(0);
}
static void solution(int x, int y) {
for(int i = x; i < n; i++) {
for(int j = y; j < m; j++) {
//늑대라면 상하좌우 울타리로 감싸기
if(board[i][j] == 'W') {
for(int k = 0; k < 4; k++) {
int nx = i + dx[k];
int ny = j + dy[k];
//해당 지점이 양이 아니고 빈칸이어야 설치가 가능함.
if(nx>=0 && ny>=0 && nx<n && ny<m) {
if(board[nx][ny] == 'S') {
flag = false;
} else if(board[nx][ny] == '.'){
board[nx][ny] = 'D';
}
}
}
}
}
}
}
}