코딩하는 해맑은 거북이

[Python] 늑대와 양 - 백준 본문

코딩테스트

[Python] 늑대와 양 - 백준

#CJE 2023. 1. 22.
해당 글은 백준 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))

     

 

 

Comments