Link
문제
풀이
(1) DFS 재귀
let input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");
let idx = 0;
const N = Number(input[idx++]);
const map = Array.from({ length: N }, () => []);
const visited = Array.from({ length: N }, () =>
Array.from({ length: N }, () => false)
);
const answers = [];
const dr = [0, 1, 0, -1];
const dc = [1, 0, -1, 0];
for (let n = 0; n < N; n++) {
map[n] = input[idx++].split("").map(Number);
}
const dfsRecursive = (r, c) => {
visited[r][c] = true;
let count = 1;
for (let d = 0; d < 4; d++) {
const tr = r + dr[d];
const tc = c + dc[d];
if (tr < 0 || tc < 0 || tr >= N || tc >= N) continue;
if (visited[tr][tc]) continue;
if (map[tr][tc] === 0) continue;
count += dfsRecursive(tr, tc);
}
return count;
};
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
if (visited[i][j]) continue;
if (map[i][j] === 0) continue;
answers.push(dfsRecursive(i, j));
}
}
console.log(answers.length);
answers.sort((a, b) => a - b).map((item) => console.log(item));
'알고리즘 > 문제' 카테고리의 다른 글
[백준 | 실버 1 | JavaScript] 2468번, 안전 영역 (0) | 2025.03.08 |
---|---|
[백준 | 실버 2 | JavaScript] 11724번, 연결 요소의 개수 (0) | 2025.03.07 |
[백준 | 실버 2 | JavaScript] 1012번, 유기농 배추 (0) | 2025.03.06 |
[백준 | 실버 3 | JavaScript] 2606번, 바이러스 (1) | 2025.03.05 |
[백준 | 실버 2 | JavaScript] 11725번, 트리의 부모 찾기 (0) | 2025.03.04 |
※ 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.