https://school.programmers.co.kr/learn/courses/30/lessons/154540
import sys
from collections import deque
sys.setrecursionlimit(10000)
def solution(maps):
answer = []
# 상 하 좌 우
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
c = len(maps)
r = len(maps[0])
visited = [[False]*r for _ in range(c)]
def DFS(i, j):
ret = 0
if i < 0 or j < 0 or i >= c or j >= r:
return ret
if maps[i][j] != "X" and visited[i][j] == False:
visited[i][j] = True
for k in range(4):
ret += DFS(i + dx[k], j + dy[k])
return int(maps[i][j]) + ret
return ret
for i in range(c):
for j in range(r):
if maps[i][j] != 'X' and visited[i][j] == False:
answer.append(DFS(i, j))
if len(answer) == 0:
return [-1]
return sorted(answer)