728x90
https://www.acmicpc.net/problem/3184
전형적인 dfs/bfs 문제라고 생각함
나는 bfs로 풀었다
from collections import deque
r, c = map(int, input().split())
array = []
sheep = 0
wolf = 0
for i in range(r):
array.append(input())
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
visited = [[False] * c for _ in range(r)]
def bfs(a, b):
global visited
temp_sheep = 0
temp_wolf = 0
queue = deque([])
queue.append((a, b))
visited[a][b] = True
if array[a][b] == 'o':
temp_sheep += 1
if array[a][b] == 'v':
temp_wolf += 1
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < r and 0 <= ny < c and not visited[nx][ny] and array[nx][ny] != '#':
if array[nx][ny] == 'o':
temp_sheep += 1
visited[nx][ny] = True
queue.append((nx, ny))
if array[nx][ny] == 'v':
temp_wolf += 1
visited[nx][ny] = True
queue.append((nx, ny))
if array[nx][ny] == '.': # .
visited[nx][ny] = True
queue.append((nx, ny))
if temp_sheep > temp_wolf:
return temp_sheep, 0
else:
return 0, temp_wolf
for i in range(r):
for j in range(c):
if array[i][j] != '#' and visited[i][j] == False:
result = bfs(i, j)
sheep += result[0]
wolf += result[1]
print(sheep, wolf)
728x90
'Algorithm (PS)' 카테고리의 다른 글
[프로그래머스] 오픈채팅방 Python3 - Kakao 2019 (0) | 2023.01.12 |
---|---|
[백준] 15683번 : 감시 (0) | 2023.01.11 |
[백준] 2461번 : 대표 선수 Python (0) | 2023.01.10 |
[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력 - GROUP BY , JOIN (0) | 2023.01.06 |
[프로그래머스] 동명 동물 수 찾기 MySQL - GROUP BY & HAVING (0) | 2023.01.06 |