늑대와 양

면접 대비

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

요약
양과 늑대가 있는 격자에서 빈 칸에 울타리를 놓아 어떤 늑대도 양에게 닿을 수 없게 만들거나, 불가능하면 0을 출력한다.
난이도

쉬움10점 중 3점

유형
그래프, BFS, 구현, 그리디
정답자
아직 제출이 없습니다

문제

크기가 R×C인 목장이 있고, 목장은 1×1 크기의 칸으로 나누어져 있다. 각각의 칸에는 비어있거나, 양 또는 늑대가 있다. 양은 이동하지 않고 위치를 지키고 있고, 늑대는 인접한 칸을 자유롭게 이동할 수 있다. 두 칸이 인접하다는 것은 두 칸이 변을 공유하는 경우이다.

목장에 울타리를 설치해 늑대가 양이 있는 칸으로 갈 수 없게 하려고 한다. 늑대는 울타리가 있는 칸으로는 이동할 수 없다. 울타리를 설치해보자.

입력

첫째 줄에 목장의 크기 R, C가 주어진다.

둘째 줄부터 R개의 줄에 목장의 상태가 주어진다. '.'는 빈 칸, 'S'는 양, 'W'는 늑대이다.

출력

늑대가 양이 있는 칸으로 갈 수 없게 할 수 있다면 첫째 줄에 1을 출력하고, 둘째 줄부터 R개의 줄에 목장의 상태를 출력한다. 울타리는 'D'로 출력한다. 울타리를 어떻게 설치해도 늑대가 양이 있는 칸으로 갈 수 있다면 첫째 줄에 0을 출력한다.

제한

  • 1 ≤ R, C ≤ 500

힌트

이 문제는 설치해야 하는 울타리의 최소 개수를 구하는 문제가 아니다.

예제3

  1. 예제 1

    입력
    6 6
    ..S...
    ..S.W.
    .S....
    ..W...
    ...W..
    ......
    
    예상 출력
    1
    ..SD..
    ..SDW.
    .SD...
    .DW...
    DD.W..
    ......
    
  2. 예제 2

    입력
    1 2
    SW
    
    예상 출력
    0
    
  3. 예제 3

    입력
    5 5
    .S...
    ...S.
    S....
    ...S.
    .S...
    
    예상 출력
    1
    .S...
    ...S.
    S.D..
    ...S.
    .S...