250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(Leet Code JS)Max Area of Island 본문
728x90
반응형
https://leetcode.com/problems/max-area-of-island/
BFS 탐색 이용.
m x n 크기의 visited 배열을 false로 초기화.
4방향 탐색을 위한 direct 배열도 선언.
answer = 탐색한 area 중 가장 큰 값을 저장한다.
bfs 함수는 x, y 값을 매개 변수로 받으며,
이 값을 통해 인접한 4방향 중 1로 된 영역의 크기를 구한다.
for문을 통해 grid를 순회하며 1로 된 영역이면서 방문하지 않은 좌표가 있다면 해당 좌표를 bfs의 매개변수로 넘겨주어 answer 값을 갱신하도록 한다.
const maxAreaOfIsland = (grid) => {
const m = grid.length;
const n = grid[0].length;
const visited = Array.from({length: m}, () => Array(n).fill(false));
const direct = [[-1, 0], [1, 0], [0, -1], [0, 1]];
let answer = 0;
const bfs = (sx, sy) => {
const queue = [];
let area = 1;
queue.push([sx, sy]);
visited[sx][sy] = true;
while(queue.length){
const [x, y] = queue.shift();
for(let k = 0; k < 4; k++){
const nx = x + direct[k][0];
const ny = y + direct[k][1];
if(nx >= 0 && nx < m && ny >= 0 && ny < n && grid[nx][ny] && !visited[nx][ny]){
area++;
queue.push([nx, ny]);
visited[nx][ny] = true;
}
}
answer = answer < area ? area : answer;
}
}
for(let i = 0; i < m; i++){
for(let j = 0; j < n; j++){
if(grid[i][j] && !visited[i][j]){
bfs(i, j);
}
}
}
return answer;
};
728x90
반응형
'Leet Code 알고리즘' 카테고리의 다른 글
(Leet Code JS)Best Time to Buy and Sell Stock (0) | 2022.03.08 |
---|---|
(Leet Code JS)Permutation in String (0) | 2022.03.08 |
(Leet Code JS)Flood Fill (0) | 2022.03.07 |
(Leet Code JS)Shuffle An Array (0) | 2022.03.02 |
(Leet Code JS) Populating Next Right Pointers in Each Node (0) | 2022.03.02 |