
😎풀이
grid 2중 순회
- 섬 도착 시, 주변 영역으로 너비 우선 탐색
- 섬의 최대 너비 갱신
- 탐색된 섬의 최대 너비 반환
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
};