728x90
λ°μν
π 07 - μ¬λλΌ μμΌλλ(BFS νμ©)
N*Nμ μ¬λλΌ μμΌλλμ μ§λκ° κ²©μνμ μ λ³΄λ‘ μ£Όμ΄μ§λ€. κ° μ¬μ 1λ‘ νμλμ΄ μνμ’μ°μ λκ°μ μΌλ‘ μ°κ²°λμ΄ μμΌλ©°, 0μ λ°λ€μ΄λ€. μ¬λλΌ μμΌλλμ λͺ κ°μ μ¬μ΄ μλμ§ κ΅¬νλ λ¬Έμ μ΄λ€.
λ§μ½ μμ κ°λ€λ©΄ μ¬μ κ°μλ μ΄ 5κ°μ΄λ€.
μ¬λλΌ μμΌλλ(DFS) λ¬Έμ μ κ°μ§λ§ μ΄λ²μλ BFS μκ³ λ¦¬μ¦μ μ΄μ©ν΄ νμ΄λ³΄μλ€. μμμ νμνλ λ¬Έμ μ κ²½μ°μλ λ³ΈμΈμκ² νΈν λ°©λ²μ μ΄μ©νμ¬ νλ©΄ λ κ² κ°λ€..π€
π νμ΄ λ°©λ²
- μ΄μ€ for λ¬Έμ λλ©΄μ 1μ΄ λμ¨λ€λ©΄ μ¬μ λ°κ²¬ν κ²μ΄λ―λ‘ λ°°μ΄μμ ν΄λΉ μ’νλ₯Ό 0μΌλ‘ μ¬ν λΉνκ³ answer++μ νλ€. λν, λμ΄ μ°μ νμμ μν΄ νμ ν΄λΉ μ’νλ₯Ό μΆκ°νλ€.
- while λ¬Έμ λλ©΄μ νμμ shift ν μ’νμ λν΄ μνμ’μ°μ λκ°μ μ νμνμ¬ μ°κ²°λ μ’νκ° μλ€λ©΄ λͺ¨λ 0μΌλ‘ μ¬ν λΉνκ³ νμ μΆκ°νλ€.
- μμ κ°μ κ³Όμ μ λ°λ³΅νλ€κ° νμ μ무κ²λ μ‘΄μ¬νμ§ μμ while λ¬Έμ λΉ μ Έλμ¨λ€λ©΄ νλμ μ¬μ λͺ¨λ νμν κ²μ΄λ―λ‘ λ€λ₯Έ μ¬μ μ°Ύλλ€.
function solution(board) {
let answer = 0;
let n = board.length;
let dx = [-1, -1, 0, 1, 1, 1, 0, -1];
let dy = [0, 1, 1, 1, 0, -1, -1, -1];
let queue = [];
// μ¬μ μ°Ύλ κ³Όμ
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
if (board[i][j] === 1) {
// λ¨Όμ 0μΌλ‘ 체ν¬ν ν νμ μΆκ°
board[i][j] = 0;
queue.push([i, j]);
answer++;
// νλμ μ¬μ λ°κ²¬νμ¬ μ£Όλ³μ νμνλ κ³Όμ
while (queue.length) {
let [x, y] = queue.shift();
for (let i = 0; i < 8; i++) {
let nx = x + dx[i];
let ny = y + dy[i];
// κ²½κ³μ νμΈ νμ β
if (nx < 0 || ny < 0 || nx >= n || ny >= n || board[nx][ny] === 0)
continue;
board[nx][ny] = 0;
queue.push([nx, ny]);
}
}
}
}
}
return answer;
}
let arr = [
[1, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 1, 1, 0],
[0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 1, 1],
[1, 1, 0, 1, 1, 0, 0],
[1, 0, 0, 0, 1, 0, 0],
[1, 0, 1, 0, 1, 0, 0],
];
console.log(solution(arr));
'Algorithm > μΈνλ°(inflearn)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JavaScript/section 10] 02 - λλ€λ¦¬ 건λκΈ° (0) | 2022.12.19 |
---|---|
[JavaScript/section 10] 01 - κ³λ¨μ€λ₯΄κΈ° (0) | 2022.12.17 |
[JavaScript/section 9] 06 - μ¬λλΌ μμΌλλ(DFS) (0) | 2022.11.24 |
[JavaScript/section 9] 05 - μ‘μμ§ μ°ΎκΈ° (0) | 2022.11.21 |
[JavaScript/section 9] 04 - μ΄μ§νΈλ¦¬ λμ΄μ°μ νμ(BFS) (0) | 2022.11.21 |