세용용용용 2023. 6. 9. 21:13

나의 코드

def solution(maps):
    answer = []
    maps_list = []
    for i in maps:
        abab = []
        for j in i:
            abab.append(j)
        maps_list.append(abab)

    n = len(maps) #세로
    m = len(maps[0]) #가로
   
    def dfs(i,j):
        answer = 0
        if i<=-1 or i>=n or j<=-1 or j>=m:
            return 0
       
        if maps_list[i][j] != 'X':
            #해당 노드 방문처리
            answer = int(maps_list[i][j])
            maps_list[i][j] = 'X'

            answer += dfs(i-1,j)
            answer += dfs(i+1,j)
            answer += dfs(i,j-1)
            answer += dfs(i,j+1)
            return answer
        return 0
   
    for i in range(n):
        for j in range(m):
            if maps_list[i][j] != 'X':
                answer.append(dfs(i,j))
    if len(answer) == 0:
        answer.append(-1)
    #print(answer)
    #print(maps_list)
    answer.sort()

    return answer
solution(["X591X",
          "X1X5X",
          "X231X",
          "1XXX1"])

아니이이이잉 또 런타임에러 .... 진짜 요즘 이친구 안보는 날이 ....

 

최종코드

from collections import deque
def solution(maps):
    answer = []
   
    n = len(maps)
    m = len(maps[0])

    move = [(-1,0), (1,0), (0,-1), (0,1)]
    visited_list = [[0]*m for _ in range(n)]

    for x in range(n):
        for y in range(m):
            if maps[x][y] == 'X' or visited_list[x][y] == 1:
                continue
               
            q = deque()
            q.append((x,y))
            visited_list[x][y] = 1

            second_answer = 0

            while q:
                nx, ny = q.popleft()

                second_answer += int(maps[nx][ny])

                for dx,dy in move:
                    if (0<=nx+dx<n) and (0<=ny+dy<m) and maps[nx+dx][ny+dy] != 'X' and visited_list[nx+dx][ny+dy] != 1:
                        q.append((nx+dx, ny+dy))
                        visited_list[nx+dx][ny+dy] = 1

            if second_answer != 0:
                answer.append(second_answer)
    print(answer)
    if answer:
        answer.sort()
        return answer
    else:
        return [-1]          

   
solution(["X591X",
          "X1X5X",
          "X231X",
          "1XXX1"])

하..., 개어렵다 ㅠㅠㅡ,,ㅠㅠ.ㅠ.ㅠ 도와줘요