코딩테스트
[Python] 늑대와 양 - 백준
#CJE
2023. 1. 22. 15:05
해당 글은 백준 16956번 문제 '늑대와 양'을 다룬다.
문제
https://www.acmicpc.net/problem/16956
16956번: 늑대와 양
크기가 R×C인 목장이 있고, 목장은 1×1 크기의 칸으로 나누어져 있다. 각각의 칸에는 비어있거나, 양 또는 늑대가 있다. 양은 이동하지 않고 위치를 지키고 있고, 늑대는 인접한 칸을 자유롭게
www.acmicpc.net
설명
해당 문제는 최소 울타리의 제한조건이 없으므로, 늑대나 양이 아닌 모든 곳을 울타리로 채워서 풀 수 있다.
그리고 만약 늑대 주변 상하좌우에 양이 있다면, 양에게 접근할 수 있는 것이므로 임의의 변수 access로 True로 설정해준다.
코드
r, c = map(int, input().split())
board = []
for i in range(r):
board.append(list(input()))
# 상하좌우
dx = [-1, 1, 0, 0]
dy = [0, 0, 1, -1]
access = False
for i in range(r):
for j in range(c):
if board[i][j] == 'W':
for k in range(4):
nx = i + dx[k]
ny = j + dy[k]
if nx < 0 or nx >= r or ny < 0 or ny >= c:
continue
if board[nx][ny] == 'S':
access = True
elif board[i][j] == 'S':
continue
elif board[i][j] == '.':
board[i][j] = 'D'
if access == True:
print(0)
else:
print(1)
for i in board:
print(''.join(i))