[LeetCode] 695. Max Area of Island

Chobby·2026년 6월 25일

LeetCode

목록 보기
1104/1111

😎풀이

  1. grid 2중 순회
  2. 섬 도착 시, 주변 영역으로 너비 우선 탐색
  3. 섬의 최대 너비 갱신
  4. 탐색된 섬의 최대 너비 반환
function maxAreaOfIsland(grid: number[][]): number {
    const n = grid.length
    const m = grid[0].length
    const ny = [-1, 0, 1, 0]
    const nx = [0, 1, 0, -1]
    let maxArea = 0
    const visited = new Set<string>()
    for(let i = 0; i < n; i++) {
        for(let j = 0; j < m; j++) {
            if(grid[i][j] === 0) continue
            let area = 0
            const queue = [[i, j]]
            while(queue.length) {
                const [y, x] = queue.shift()
                const key = `${y},${x}`
                if(visited.has(key)) continue
                visited.add(key)
                area++
                for(let k = 0; k < 4; k++) {
                    const dy = y + ny[k]
                    const dx = x + nx[k]
                    if(visited.has(`${dy},${dx}`)) continue
                    if(dy >= n || dy < 0 || dx >= m || dx < 0) continue
                    if(grid[dy][dx] === 0) continue
                    queue.push([dy, dx])
                }
            }
            maxArea = Math.max(maxArea, area)
        }
    }
    return maxArea
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글