1. 진단 결과
2. 학습 내용
문제
https://www.codetree.ai/missions/2/problems/comfort-zone?&utm_source=clipboard&utm_medium=text
나의 풀이 (JS)
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
const [n, m] = input.shift().split(" ").map(Number);
input = input.map((e) => e.split(" ").map(Number));
let visited = [];
let maxSafeAreas = Number.MIN_SAFE_INTEGER;
let minK = 0;
const dx = [0, 1, 0, -1];
const dy = [1, 0, -1, 0];
function dfs(x, y, k) {
for (let i = 0; i < 4; i++) {
let nx = x + dx[i];
let ny = y + dy[i];
if (
nx >= 0 &&
nx < n &&
ny >= 0 &&
ny < m &&
input[nx][ny] > k &&
!visited[nx][ny]
) {
visited[nx][ny] = true;
dfs(nx, ny, k);
}
}
}
for (let k = 1; k <= 100; k++) {
visited = Array.from({ length: n }, () =>
Array.from({ length: m }, () => false)
);
let countSafe = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
if (input[i][j] <= k || visited[i][j]) continue;
countSafe++;
visited[i][j] = true;
dfs(i, j, k);
}
}
if (maxSafeAreas < countSafe) {
maxSafeAreas = countSafe;
minK = k;
}
}
console.log(`${minK} ${maxSafeAreas}`);
'자료구조&알고리즘 > 코딩테스트 문제연습' 카테고리의 다른 글
[코드트리 챌린지] 7주차 - BFS 탐색 / 돌 잘 치우기 (JS) (1) | 2023.10.23 |
---|---|
[코드트리 챌린지] 6주차 - 삼성기출 / 외주 수익 최대화하기 (JS) (0) | 2023.10.16 |
[코드트리 챌린지] 5주차 - BFS 탐색 / K번 최댓값으로 이동하기 (0) | 2023.10.09 |
[코드트리 챌린지] 4주차 - DFS / 뿌요뿌요 (0) | 2023.10.09 |
[코드트리 챌린지] 3주차 - K개 중 하나를 N번 선택하기(Simple) / 아름다운 수 (0) | 2023.09.25 |
댓글