문제
https://www.acmicpc.net/problem/2468
2468번: 안전 영역
재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는
www.acmicpc.net
접근
- N보다 큰 수가 있는 부분을 탐색하고, 한 부분의 탐색이 끝날 때 cnt++ 을 한다. cnt 최댓값을 구한다.
- 결과: 중도포기
풀이
// 백준 제출시
// const address="/dev/stdin"
// VSC 테스트시
const address = "./input.txt";
const input = require("fs").readFileSync(address).toString().trim().split("\n");
const N = +input[0];
const areas = input.slice(1).map((v) => v.split(" ").map((v) => +v));
const offsetX = [0, 0, -1, 1];
const offsetY = [-1, 1, 0, 0];
const dfs = (x, y, height, visited) => {
offsetX.forEach((dx, i) => {
const nx = x + dx;
const ny = y + offsetY[i];
if (nx >= 0 && nx < N && ny >= 0 && ny < N && !visited[nx][ny]) {
visited[nx][ny] = true;
dfs(nx, ny, height, visited);
}
});
};
let maxCount = 0;
for (let height = 0; height <= 100; height++) {
let count = 0;
const visited = [...Array(N)].map((_, x) =>
[...Array(N)].map((_, y) => areas[x][y] <= height)
);
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
if (!visited[i][j]) {
visited[i][j] = true;
dfs(i, j, height, visited);
count++;
}
}
}
maxCount = Math.max(maxCount, count);
}
console.log(maxCount);
'Board > 알고리즘' 카테고리의 다른 글
백준 2667 단지 찾기 자바스크립트 (0) | 2023.01.27 |
---|---|
백준 2606 자바스크립트 (0) | 2023.01.26 |
백준 2178 자바스크립트 (0) | 2023.01.24 |
백준 2667 자바스크립트 (0) | 2023.01.24 |
백준 14888 자바스크립트 (0) | 2023.01.22 |