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

+ Recent posts