티스토리 뷰

Coding Test

[Baekjoon] 16956_늑대와 양

lluna 2022. 1. 17. 08:22
 

16956번: 늑대와 양

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

www.acmicpc.net

문제 유형

- DFS 또는 일반 델타탐색

 

내 풀이

- 일반 델타탐색으로 풀이

 

오류 원인

- 늑대 바로 옆에 늑대일 경우를 고려하지 못함

 

해결 방법

- 늑대일 때는 건너뜀

 

dx = [0, -1, 0, 1]
dy = [1, 0, -1, 0]

r, c = map(int, input().split())
arr = [list(input()) for _ in range(r)]


def solution():
    for i in range(r):
        for j in range(c):
            if arr[i][j] == "W":
                for k in range(4):
                    if (0 <= i + dx[k] < r) and (0 <= j + dy[k] < c):
                        if arr[i+dx[k]][j+dy[k]] == "S":
                            return 0
                for k in range(4):
                    if (0 <= i + dx[k] < r) and (0 <= j + dy[k] < c):
                        # . 일때만 D로 바꾼다. (늑대일 수 있으므로)
                        if arr[i+dx[k]][j+dy[k]] == ".":
                            arr[i + dx[k]][j + dy[k]] = "D"


answer = solution()
if answer == 0:
    print(0)
else:
    print(1)
    for row in arr:
        print("".join(row))

'Coding Test' 카테고리의 다른 글

[Programmers] k진수에서 소수 개수 구하기  (0) 2022.01.17
[Jungol] 1329. 별삼각형3  (0) 2022.01.05
[Jungol] 1719. 별삼각형2  (0) 2022.01.04
[Programmers] 빛의 경로 사이클  (0) 2022.01.02
[Jungol] 1438. 색종이  (0) 2021.12.31
댓글