import sys
sys.setrecursionlimit(10**7)
mr = [0,1,0,-1]
mc = [1,0,-1,0]
global check
check = [[False for _ in range(101)] for _ in range(101) ]
d = [[0 for _ in range(101)] for _ in range(101) ]
global sum
sum=0
global a,b
def solution(maps):
answer = []
global a,b,check
d = maps
a=len(d); b=len(d[0])
#check = [[False for _ in range(a)] for _ in range(b) ]
for i in range(0,a):
for j in range(0,b):
global sum
DFS(i,j,d)
if(sum!=0): answer.append(sum)
sum=0
if(len(answer)==0): answer.append(-1)
else: answer.sort()
#print(answer)
return answer
def DFS(v,e,d):
global sum,a,b,check
if d[v][e] == "X":
check[v][e] = True; return
if check[v][e] == True: return
check[v][e]=True
m = int(d[v][e])
sum=sum+m
#print(v+","+e+": "+ sum)
for i in range(4):
nr = v+mr[i]; nc = e+mc[i]
if 0<= nr<a and 0<= nc< b:
if check[nr][nc]==False: DFS(nr,nc,d)
return
댓글