728x90
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on("line", (line) => {
input.push(line);
});
rl.on("close", () => {
const result = solution(input);
for (let i = 0; i < result.length; i++) {
console.log(result[i]);
}
process.exit(0);
});
var dx = [0, 1, 0, -1];
var dy = [1, 0, -1, 0];
function bfs(x, y, n, m, maps, visited) {
q = [];
q.push([x, y]);
let extent = 0;
while (q.length !== 0) {
const [x, y] = q.shift();
extent += 1;
visited[x][y] = true;
for (let i = 0; i < 4; i++) {
const nx = x + dx[i];
const ny = y + dy[i];
if (0 <= nx && nx < n && 0 <= ny && ny < m) {
if (maps[nx][ny] === 1 && visited[nx][ny] === false) {
q.push([nx, ny]);
visited[nx][ny] = true;
}
}
}
}
return extent;
}
function solution(input) {
const [n, m] = input[0].split(" ").map(Number);
const maps = input.slice(1).map((line) => line.split(" ").map(Number));
let visited = Array.from({ length: n }, () => new Array(m).fill(false));
let cnt = 0;
let extents = [];
let answer = [];
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
if (maps[i][j] === 1 && visited[i][j] === false) {
const extent = bfs(i, j, n, m, maps, visited);
extents.push(extent);
cnt += 1;
}
}
}
answer.push(cnt);
answer.push(cnt === 0 ? 0 : Math.max(...extents));
return answer;
}
728x90
'백준 코딩 테스트' 카테고리의 다른 글
3차원 BFS 탬플릿 + 자바스크립트 queue 구현 간단 탬플릿 (0) | 2024.10.23 |
---|---|
자바스크립트 입력 받는 방법 (0) | 2024.10.17 |
다익스트라 알고리즘 - 배열에 cost가 주어질 시 탬플릿 코드 (0) | 2024.01.28 |
다익스트라 템플릿 (0) | 2023.12.15 |
[백준] 백준 풀 문제 정리 (0) | 2023.07.10 |