본문 바로가기
Programming/LeetCode

[LeetCode] Number of Islands

by 데이터현 2022. 3. 25.

https://leetcode.com/problems/number-of-islands/

 

Number of Islands - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

매우 유명한 섬 문제

dfs로 풀이했다

class Solution:
    def numIslands(self, grid: List[List[str]]) -> int:
        move = [(0,1),(0,-1),(1,0),(-1,0)]
        def OOB(x, y):
            return x<0 or x>=len(grid) or y<0 or y>=len(grid[0])
        
        def dfs(i, j):
            if OOB(i, j) or grid[i][j] != "1":
                return
            grid[i][j] = 0
            
            for mov in move:
                dfs(i+mov[0], j+mov[1])
            
        count = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] == "1":
                    dfs(i,j)
                    count += 1
        return count

 

근데 내부 함수에서 둘러싸인 외부 함수의 변수를 어떻게 사용할까?

예를 들면 dfs에서 grid, move??

파이썬에서는 변수 스코프를 LEGB로 관리한다. 아래 글을 참고하거나 더 알고싶다면 일급객체, 클로저로 검색하자

2022.01.11 - [Programming/Python] - python의 LEGB 규칙

 

python의 LEGB 규칙

파이썬에서 변수에 값을 바인딩하거나 변수의 값을 참조하는 경우 LEGB 규칙을 따른다. 1. L - Local의 약자로 함수 안을 의미한다. 2. E - Enclosed function locals의 약자로 내부 함수에서 자신의 외부 함

hkim-data.tistory.com

 

'Programming > LeetCode' 카테고리의 다른 글

[LeetCode] Daily Temperatures  (0) 2022.03.29
[LeetCode] Remove Duplicate Letters  (0) 2022.03.29
[LeetCode] Two City Scheduling  (0) 2022.03.25
[LeetCode] Valid Parentheses  (0) 2022.03.25
[LeetCode] Swap Nodes in Pairs  (0) 2022.03.24

댓글