문제 링크 : 지뢰찾기
어려워서 다른분의 코드를 참고했다.
최대갯수를 찾아야하기 때문에 숫자와 인접한 #이 아닌 모든 #은 폭탄 처리를 해줬다.
그리고 숫자는 int처리 하는 것 까지는 했는데 그 이후의 알고리즘을 풀지 못했다.
def dfs(bomb):
global n,result
while bomb:
x,y=bomb.pop()
for i in range(8):
nx=x+dx[i]
ny=y+dy[i]
if (nx==0 or nx==n-1)or(ny==0 or ny==n-1):
if arr[nx][ny]==0:
break
else:
for i in range(8):
nx=x+dx[i]
ny=y+dy[i]
if (nx==0 or nx==n-1)or(ny==0 or ny==n-1):
arr[nx][ny]-=1
result+=1
return
n=int(input())
arr=[list(input()) for _ in range(n)]
dx=[0,0,-1,1,1,-1,1,-1]
dy=[1,-1,0,0,1,-1,-1,1]
bomb=[] #폭탄
result=0
if n>4: #테두리와 인접하지 않는 칸은 모두 폭탄이라고 생각
result+=(n-4)**2
for i in range(n):
for j in range(n):
if i==1 or i==n-2:
if arr[i][j]=="#":
bomb.append((i,j))
else:
arr[i][j]=int(arr[i][j])
elif 1<i<n-2:
if j==1 or j==n-2:
bomb.append((i,j))
else:
if arr[i][j]!="#":
arr[i][j]=int(arr[i][j])
else:
if arr[i][j]!='#':
arr[i][j]=int(arr[i][j])
dfs(bomb)
print(result)
dfs함수 안에 있는 else가 이해되지 않았다.위치가 이상하다고 생각했다. 무엇에 대한 else를 뜻하는걸까..?아시는 분 알려주세요!!!