๋ฌธ์ ๋งํฌ
์ ํ์ ์ธ BFS๋ฌธ์
๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉด์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฌด์ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ณ
ํ๋์ ๋ฌด์ธ๋๋ฅผ ๋ฐ๊ฒฌํ ๋๋ง๋ค bfs๋ฅผ ํตํด
ํด๋น ๋ฌด์ธ๋๊ฐ ๊ฐ์ง๊ณ ์๋ ์๋์ ์๋ฅผ ๋ํด๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ํ์์ต๋๋ค
๋ฐฉ๋ฌธํ ๋ฌด์ธ๋์ ์์๋ X๋ก ๋ณ๊ฒฝํ์ฌ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํด์คฌ์ต๋๋ค
function solution(maps) {
//bfs ์์ ํ์
const q = [];
const result = [];
const r_length = maps.length;
const c_length = maps[0].length;
const dr = [0, 0, -1, 1];
const dc = [1, -1, 0, 0];
//๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋ณํ
for (let r = 0; r < r_length; r++) {
maps[r] = maps[r].split('');
}
//maps์ ๋ชจ๋ ์์๋ฅผ ๋๋ฉด์ bfsํ์
for (let r = 0; r < r_length; r++) {
for (let c = 0; c < c_length; c++) {
//๋ฌด์ธ๋๋ฅผ ์ฐพ์ผ๋ฉด
if (maps[r][c] === 'X') continue;
//bfs ํ์์ ํตํด ํ์ฌ ๋ฌด์ธ๋๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ์๋์ ํฉ์ ๊ตฌํจ
let sum = 0;
sum += Number(maps[r][c]);
maps[r][c] = 'X';
q.push([r, c]);
while (q.length) {
const [current_r, current_c] = q.shift();
for (let i = 0; i < 4; i++) {
const next_r = current_r + dr[i];
const next_c = current_c + dc[i];
if (
next_r >= 0 &&
next_r < r_length &&
next_c >= 0 &&
next_c < c_length &&
maps[next_r][next_c] !== 'X'
) {
const val = Number(maps[next_r][next_c]);
maps[next_r][next_c] = 'X';
sum += val;
q.push([next_r, next_c]);
}
}
}
//ํ๋์ ๋ฌด์ธ๋์ ์๋ ์๋ ์ result์ ํธ์ฌ
result.push(sum);
}
}
return result.length ? result.sort((a, b) => a - b) : [-1];
}
'๐ง ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ง๊ฟ JS (0) | 2024.01.09 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ JS (1) | 2024.01.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํธํ ๋์ค JS (1) | 2024.01.05 |
[ํ๋ก๊ทธ๋๋จธ์ค]๋ฏธ๋ก ํ์ถ JS (2) | 2024.01.04 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํผ์์ ํ๋ ํฑํํ JS (1) | 2024.01.03 |