[프로그래머스] 무인도 여행 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
반응형
'코딩 테스트 준비' 카테고리의 다른 글
[프로그래머스] 리코쳇 로봇 Lv2 (0) | 2025.02.18 |
---|---|
[프로그래머스] 줄 서는 방법 Lv2 (0) | 2025.02.15 |
[프로그래머스] 미로 탈출 Lv2 (0) | 2025.02.14 |
[프로그래머스] 숫자 카드 나누기 Lv2 (0) | 2025.02.13 |
[프로그래머스] 시소 짝꿍 Lv1 (0) | 2025.02.12 |