https://programmers.co.kr/learn/courses/30/lessons/1844


BFS 써서 구현했는데


from collections import deque


dx = [1, 0, -1, 0]

dy = [0, 1, 0, -1]

INF = 1e5

global_map = []

distance_table=[]

n, m = 0, 0


### 설명 : global map, distance_table, n, m은 모든 bfs함수에서 공통으로 사용하려고 전역변수로 선언함

### distance_table은 거리 저장해놓는 테이블로, 현재 위치에서 다음 위치로 갈지말지 선택할때 현재위치보다 다음위치의 distance가 더 낮으면 궂이 안감


##################################################

def bfs(deq):

### bfs함수 글로벌 변수 선언

global global_map

global distance_table

global n, m


### queue에서 하나씩 뽑음

if len(deq) == 0:

return None

else:

x, y = deq.popleft()

### 현재 위치에서의 거리값

local_n = distance_table[x][y]

### 상하좌우 다음좌표 살피기

for i in range(4):

new_x, new_y = x+dx[i], y+dy[i]

### 다음 좌표가 갈 수 없는 곳이거나 현재 좌표 + 1보다 더 거리가 낮아서 굳이 갈 필요 없는 경우 거르고

### 갈 필요 있는 경우 deque에 삽입

if new_x <0 or new_y <0 or new_x ==n or new_y == m:

continue

elif global_map[new_x][new_y] == 0:

continue

elif distance_table[new_x][new_y] > local_n + 1:

distance_table[new_x][new_y] = local_n+1

deq.append([new_x,new_y])


### 현재 위치에서 갈 수 있는 위치들을 queue에 삽입하고, 다시 재귀적으로 bfs

bfs(deq)


##############################################################


def solution(maps):

answer = 0


### 글로벌 변수 선언 및 초기화

global global_map

global distance_table

global n, m

n = len(maps)

m = len(maps[0])

global_map = maps

distance_table = [[INF for i in range(m)] for j in range(n)]

distance_table[0][0] = 1


deq = deque()

deq.append([0,0])


### bfs를 모두 완수한 후 갱신된 distance table에서 (n-1, m-1) 좌표의 거리값을 분석

bfs(deq)

if distance_table[n-1][m-1] == INF:

answer = -1

else:

answer = distance_table[n-1][m-1]

return answer


이게 내 코드거든?

정확성 테스트는 오류 없이 만점인데

효율성 테스트에서 시간초과도 아니고 4개 다 runtime error가 뜸 ..

정확성에서 다 통과했다는건 런타임 오류가 뜰만한게 없다는 소리 아니야?

도대체 왜 런타임에러가 뜨는지 모르겠음 ㅠㅠ