[백준/python/2140] 지뢰찾기

bej_ve·2022년 4월 22일
0

python알고리즘

목록 보기
20/46

문제 링크 : 지뢰찾기

어려워서 다른분의 코드를 참고했다.
최대갯수를 찾아야하기 때문에 숫자와 인접한 #이 아닌 모든 #은 폭탄 처리를 해줬다.
그리고 숫자는 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를 뜻하는걸까..?아시는 분 알려주세요!!!

0개의 댓글