본문 바로가기
알고리즘/백준

백준-3184번(양)-python3

by nyeongha 2023. 11. 26.
from collections import deque

# 글자 '.' (점)은 빈 필드
# 글자 '#'는 울타리
# 'o'는 양
# 'v'는 늑대

R,C=map(int,input().split())
field=[]
visit=[[0 for ii in range(C)] for jj in range(R)]

num=[0,0] # 양,늑대

for r in range(R):
    field.append(list(str(input())))


def bfs(i,j):
    v=0
    o=0
    q=deque([(i,j)])

    while q:
        x,y=q.popleft()
        for m,n in [(x,y),(x+1,y),(x-1,y),(x,y+1),(x,y-1)]:
            if 0<=m<R and 0<=n<C and not visit[m][n]:
                visit[m][n]=1
                if field[m][n]=='v':
                    v+=1
                    q.append((m,n))
                elif field[m][n]=='o':
                    o+=1
                    q.append((m,n))
                elif field[m][n]=='.':
                    q.append((m,n))
    

    if o>v:
        num[0]+=o
    else:
        num[1]+=v

    return num





for i in range(R):
    for j in range(C):
        if (field[i][j]=='v' or field[i][j]=='o' or field[i][j]=='.') and visit[i][j]==0:
            bfs(i,j)
            
print(*num,sep=' ')

'알고리즘 > 백준' 카테고리의 다른 글

백준-4101번(크냐?)-python3  (0) 2023.11.26
백준-3273번(두 수의 합)-python3  (2) 2023.11.26
백준-3053번(택시 기하학)-python3  (0) 2023.11.26
백준-3052번(나머지)-python3  (0) 2023.11.26
백준-3046번(R2)-python3  (0) 2023.11.26