[프로그래머스] 무인도 여행 (python)

신선한양배추·2023년 10월 29일
0

코드

import sys
sys.setrecursionlimit(10**6)

def solution(maps):
    maps = [list(map) for map in maps]
    def dfs(y, x):
        if y < 0 or y >= len(maps) or x < 0 or x >= len(maps[0]) or maps[y][x] == 'X':
            return 0
        ret = int(maps[y][x])
        maps[y][x] = 'X'
        ret += dfs(y-1, x)
        ret += dfs(y+1, x)
        ret += dfs(y, x-1)
        ret += dfs(y, x+1)
        return ret
    ret = []
    for i in range(len(maps)):
        for j in range(len(maps[0])):
            food = dfs(i, j)
            if food != 0: ret.append(food) 
    if len(ret) == 0 : return [-1] 
    return sorted(ret)
        

내가 푼 방법

전형적인 dfs 문제이므로 어렵지 않았다.
모든 좌표를 순회하며 값이 있으면 dfs로 연결된 섬의 값을 모두 더하며, 한번 방문했으면 'X' 로 만든다.

profile
문서는 독자를 위해 쓰는것

0개의 댓글

관련 채용 정보