티스토리 뷰
const readline = require("readline");
let input = [];
let map = [];
let result = [];
let [total, count] = [0, 0];
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => input.push(line.trim())).on("close", () => {
const size = parseInt(input[0]);
input.splice(0, 1);
for (let i of input) {
map.push(i.split("").map(Number));
}
// 위는 입력받는 코드
// 이차원 배열 전체를 검색하는 for문
for (let x = 0; x < map.length; x++) {
for (let y = 0; y < map[x].length; y++) {
if (navi(x, y, size)) {
total++;
result.push(count);
//count초기화
count = 0;
}
}
}
//오름차순으로 정렬
result.sort((a, b) => a - b);
result.unshift(total);
console.log(result.join("\n"));
});
const navi = (x, y, size) => {
//지도의 크기 넘어가는 곳은 false
if (x < 0 || x > size - 1 || y < 0 || y > size - 1) return false;
//하나의 단지를 dfs로 계속 진행
if (map[x][y] === 1) {
count++;
map[x][y] = 2;
navi(x, y - 1, size);
navi(x + 1, y, size);
navi(x, y + 1, size);
navi(x - 1, y, size);
return true;
}
return false;
};
dfs를 이용해서 한 단지를 끝내면 dfs가 끝나고
count값이 나오면 result에 입력되고 초기화된다.
그리고 total이 카운트 된다.
마지막으로 total은 마지막에 첫번째 줄에 들어가게 하였다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 7576 [nodejs] 토마토 (0) | 2021.02.04 |
---|---|
백준2178[nodejs] 미로 탐색 (0) | 2021.02.04 |
백준1012[nodejs]유기농 배추 (0) | 2021.02.04 |
백준2606[nodejs] 바이러스 (0) | 2021.02.04 |
백준1260[nodejs] DFS와 BFS (0) | 2021.02.03 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- nodejs
- Replace
- JavaScript
- tolowercase
- SQL
- 회원가입
- nodemailer error
- JOIN
- Express
- Level 1
- 로그인
- 백준 7562 node
- left join
- AWS
- 바이러스 dfs
- 코드테스트
- 백준 7569 node
- 프로그래머스
- 카카오2018[1차]
- GROUP BY
- 코딩테스트
- slice
- Split
- 백준
- 토마토3차원
- 정규표현식
- 숫자야구게임
- sort
- smtp error
- 534 error
- Total
- Today
- Yesterday