늑대와양 - 16956

Seongjin Jo·2023년 3월 12일
0

Baekjoon

목록 보기
2/51

문제

풀이

package Baekjoon;


import java.util.Scanner;

//늑대와 양 - s3
public class ex16956 {
    static int n,m;
    static char[][] arr;
    static int[] dx={0,1,0,-1};
    static int[] dy={-1,0,1,0};
    static boolean flag = true;
    public static void DFS(int x, int y){
        for(int i=0; i<4; i++){
            int nx = x + dx[i];
            int ny = y + dy[i];
            if(nx>=0 && nx<n && ny>=0 && ny<m){
                if(arr[nx][ny]=='.'){
                    arr[nx][ny]='D';
                }
                if(arr[nx][ny]=='S'){
                    flag=false;
                    return;
                }
            }
        }
    }
    public static void solution(char[][] arr){
        for(int i=0; i<n; i++){
            for(int j=0; j<m; j++){
                if(arr[i][j]=='W'){
                    DFS(i,j);
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);

        n=sc.nextInt();
        m=sc.nextInt();
        arr = new char[n][m];
        for(int i=0; i<n; i++){
            String str = sc.next();
            for(int j=0; j<m; j++){
                arr[i][j] = str.charAt(j);
            }
        }
        solution(arr);

        if(flag==true){
            System.out.println(1);
            for(int i=0; i<n; i++){
                for(int j=0; j<m; j++){
                    System.out.print(arr[i][j]);
                }
                System.out.println();
            }
        }
        else System.out.println("0");
    }
}

우선, 어려운 문제는 아니다. 조금 헷갈렸던 건 문제의 출력과 똑같이 답을 내야한다고 생각했는데 그냥 늑대가 양에게 접근만 못하게 하면 무엇이든 정답이된다.

  1. 입력받을 때 유의.
  2. 입력받은 arr을 탐색하면서 "W" 늑대를 만나면 상하좌우로 "D"울타리를 쳐주면된다.
  3. 이때 늑대 주변에 "S"양이 있으면 무조건 리턴;

0개의 댓글