본문 바로가기
프로그래머스

Level2 무인도 여행

by ysunee 2023. 2. 1.
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

'프로그래머스' 카테고리의 다른 글

Level2 JadenCase 문자열 만들기  (0) 2022.02.03
Level2 행렬의 곱셈  (0) 2022.02.03
Level2 피보나치 수  (0) 2022.02.03
Level2 최솟값 만들기  (0) 2022.02.03
Level2 최댓값과 최솟값  (0) 2022.02.03

댓글