코딩 테스트 준비
[프로그래머스] 무인도 여행 Lv2
개발쉐발
2025. 2. 17. 20:10
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/154540
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
function solution(maps) {
const result = [];
const [R, C] = [maps.length, maps[0].length];
const visited = Array.from({ length: R }, () => Array(C).fill(0));
const move = [[0, 1], [0, -1], [1, 0], [-1, 0]];
const bfs = (a, b) => {
let cnt = 0;
const q = [[a, b]];
cnt += parseInt(maps[a][b]);
visited[a][b] = 1;
while (q.length) {
const [r, c] = q.shift();
for (let i = 0; i < 4; i++) {
const nr = r + move[i][0];
const nc = c + move[i][1];
if (nr >= 0 && nc >= 0 && nr < R && nc < C &&
!visited[nr][nc] && maps[nr][nc] !== "X") {
visited[nr][nc] = 1;
cnt += parseInt(maps[nr][nc]);
q.push([nr, nc]);
}
}
}
result.push(cnt);
};
for (let i = 0; i < R; i++) {
for (let j = 0; j < C; j++) {
if (!visited[i][j] && maps[i][j] !== "X") bfs(i, j);
}
}
if (result.length === 0) return [-1];
return result.sort((a, b) => a - b);
}
728x90
반응형