728x90
테스트케이스는 통과하는데 실제로는 시간 초과가 나온다. visited 까지 만들어서도 구현을 했는데 계속 시간 초과가 나온다.
from collections import deque
def bfs(k,i,j,width,height):
answer = 0
queue = deque()
dx = [1,-1,0,0]
dy = [0,0,1,-1]
queue.append([i,j])
while queue:
x,y = queue.popleft()
answer += int(k[x][y])
k[x][y]='0'
for i in range(4):
temp_x = dx[i] + x
temp_y = dy[i] + y
if 0<=temp_x<height and 0<=temp_y<width and k[temp_x][temp_y]!='0' and k[temp_x][temp_y]!='X':
queue.append([temp_x,temp_y])
return answer
def solution(maps):
answer = []
width = len(maps[0])
height = len(maps)
k = [ ]
for i in range(0,len(maps)):
k.append(list(maps[i]))
# 방문 한 곳은 0으로 변경하기
# 반복문을 돌면서 '0' 과 'X' 가 아니면 bfs 돌리기
for i in range(0,len(k)):
for j in range(0,len(k[i])):
if k[i][j]!='0' and k[i][j]!='X':
answer.append(bfs(k,i,j,width,height))
if len(answer)==0:
return [-1]
else:
return list(sorted(answer))
728x90
'🟢 알고리즘 문제 풀이 > Programmers' 카테고리의 다른 글
| [파이썬] 프로그래머스 프로세스 (0) | 2023.08.21 |
|---|---|
| [파이썬] 프로그래머스 연속 펄스 부분 수열의 합 (0) | 2023.06.09 |
| [파이썬] 백준 10159 저울 (0) | 2023.05.08 |
| [파이썬] 프로그래머스 연속된 부분 수열의 합 (0) | 2023.04.26 |
| [파이썬] 프로그래머스 단어 변환 (0) | 2023.03.10 |