: '1' 주변에 '0'이 2개 이상 있을 때 0으로 만들어야 함.
추가조건 0이 1 내부에 둘러쌓여 있을 때 제외
from collections import deque
N,M = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
dx, dy = [-1,0,1,0],[0,1,0,-1]
count = 0
def FindCheese(x,y):
q = deque()
q.append((x,y))
ch = [[-1]*M for i in range(N)]
ch[x][y] = 0
while q :
x,y = q.popleft()
for i in range(4):
xx,yy = x+dx[i],y+dy[i]
if xx<0 or xx>=N or yy<0 or yy>=M or ch[xx][yy] != -1: continue
if arr[xx][yy] >= 1 :
arr[xx][yy] += 1
else :
ch[xx][yy] = 0
q.append((xx,yy))
while True :
FindCheese(0,0)
melt = False
for x in range(N):
for y in range(M):
if arr[x][y] >= 3 :
arr[x][y] = 0
melt = True
elif arr[x][y] == 2 :
arr[x][y] = 1
if melt :
count += 1
else :
break
print(count)
어렵다어렵다 @_@ 꼭 다시 풀어보기 !
조건을 정확하게 예외없이 코드를 짜야하는데, 일단 BFS 만들면 무한루프 돌면서 시작이다... ㅋㅋㅋ
문제 더 더 더 많이 풀어보고, 풀어본 문제는 확실히 내 것으로 만들어야지.~~
그래도 전보다 훨씬 잘풀리고 방향도 잡아갈 수 있어서 너무 재밌당 ㅎㅎㅎ