알고리즘
백준)양
1일1공부실천하자
2023. 3. 2. 23:14
https://www.acmicpc.net/problem/3184
3184번: 양
첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다.
www.acmicpc.net
from collections import deque
col,row = map(int,input().split())
arr = []
for i in range(col):
a = str(input())
a = list(a)
arr.append(a)
visit = [[False]*row for _ in range(col)]
dx = [1,-1,0,0]
dy = [0,0,1,-1]
w,s = 0,0
for i in range(col):
for j in range(row):
if visit[i][j] == False:
if arr[i][j] == 'v' or arr[i][j] =='o':
wolf,sheep =0,0
q = deque()
q.append((i,j))
visit[i][j] = True
while q:
x,y = q.popleft()
if arr[x][y] == 'v':
wolf += 1
if arr[x][y] == 'o':
sheep += 1
for k in range(4):
nx = dx[k] + x
ny = dy[k] + y
if 0 <= nx < col and 0 <= ny < row:
if visit[nx][ny] == False:
if arr[nx][ny] != '#':
visit[nx][ny] = True
q.append((nx,ny))
if wolf <sheep:
s += sheep
else:
w += wolf
print(s,w)
BFS를 이용한 문제풀이.