백준 풀이

백준 14502번 파이썬

ag2개발자 2022. 8. 31. 15:26
from collections import deque
import copy
def bfs():
    queue=deque()
    gr=copy.deepcopy(g)
    global res
    for i in range(n):
        for j in range(m):
            if gr[i][j]==2:
                queue.append((i,j))
    while queue:
        x,y=queue.popleft()
        for i in range(4):
            nx=x+dx[i]
            ny=y+dy[i]
            if nx < 0 or nx >= n or ny < 0 or ny >= m:
                continue
            if gr[nx][ny]==0:
                gr[nx][ny]=2
                queue.append((nx,ny))
    cnt=0
    for e in range(n):
        for f in range(m):
            if gr[e][f]==0:
                cnt+=1
    res=max(res,cnt)
    
def check(num):
    if num==3:
        bfs()
        return
    for p in range(n):
        for q in range(m):
            
            if g[p][q]==0:
                g[p][q]=1
                check(num+1)
                g[p][q]=0
                
n,m=map(int,input().split())
res=0
g=[]
dx=[1,-1,0,0]
dy=[0,0,1,-1]
for i in range(n):
    g.append(list(map(int,input().split())))
check(0)
print(res)

'백준 풀이' 카테고리의 다른 글

백준 1011번 파이썬  (0) 2022.08.31
백준 1654번 파이썬 (이분탐색)  (0) 2022.08.31
백준 9020번 파이썬 소수찾기  (0) 2022.08.31
백준 9663번 파이썬 (백트래킹 기초)  (0) 2022.08.30
백준 4949번 파이썬  (0) 2022.08.30