728x90
λ°μν
π 06 - μ¬λλΌ μμΌλλ(DFS νμ©)
N*Nμ μ¬λλΌ μμΌλλμ μ§λκ° κ²©μνμ μ λ³΄λ‘ μ£Όμ΄μ§λ€. κ° μ¬μ 1λ‘ νμλμ΄ μνμ’μ°μ λκ°μ μΌλ‘ μ°κ²°λμ΄ μμΌλ©°, 0μ λ°λ€μ΄λ€. μ¬λλΌ μμΌλλμ λͺ κ°μ μ¬μ΄ μλμ§ κ΅¬νλ λ¬Έμ μ΄λ€.
λ§μ½ μμ κ°λ€λ©΄ μ¬μ κ°μλ μ΄ 5κ°μ΄λ€.
π νμ΄ λ°©λ²
λ―Έλ‘ νμ λ¬Έμ μ μ μ¬ν λ¬Έμ μ΄λ―λ‘ μ°Έκ³ νλ©΄ μ’μ λ―νλ€.
- μ΄μ€ for λ¬Έμ λλ©΄μ 1μ΄ λμ¨λ€λ©΄ μ¬μ λ°κ²¬ν κ²μ΄λ―λ‘ λ°°μ΄μμ ν΄λΉ μ’νλ₯Ό 0μΌλ‘ μ¬ν λΉνκ³ answer++μ νλ€.
- ν΄λΉ μ’νμ λν΄ DFSλ₯Ό λλ©΄μ μνμ’μ°μ λκ°μ μΌλ‘ μ°κ²°λ μ’νκ° μλμ§ νμνλ€.
- μ°κ²°λ μ’νκ° μλ€λ©΄ 0μΌλ‘ μ¬ ν λΉνκ³ μ°κ²°λ μ’νλ‘ μ΄λνλ€.
- λ μ΄μ μ°κ²°λ μ’νκ° μλ€λ©΄ DFS ν¨μλ₯Ό λͺ¨λ μ’ λ£νκ³ μ΄μ€ for λ¬Έμ λλ©΄μ μλ‘μ΄ μ¬μ μ°Ύλλ€.
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];
// μ΄μ€ for λ¬Έμ λλ©΄μ μ¬μ μ°Ύλ μ€
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
if (board[i][j] === 1) {
board[i][j] = 0;
answer++;
DFS(i, j);
}
}
}
// DFS λλ©΄μ μ°κ²°λ μ’νλ₯Ό νμνλ μ€
function DFS(x, y) {
for (let k = 0; k < 8; k++) {
let nx = x + dx[k];
let ny = y + dy[k];
if (nx >= 0 && ny >= 0 && nx < n && ny < n) {
if (board[nx][ny] === 1) {
board[nx][ny] = 0;
DFS(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] 01 - κ³λ¨μ€λ₯΄κΈ° (0) | 2022.12.17 |
---|---|
[JavaScript/section 9] 07 - μ¬λλΌ μμΌλλ(BFS) (0) | 2022.11.28 |
[JavaScript/section 9] 05 - μ‘μμ§ μ°ΎκΈ° (0) | 2022.11.21 |
[JavaScript/section 9] 04 - μ΄μ§νΈλ¦¬ λμ΄μ°μ νμ(BFS) (0) | 2022.11.21 |
[JavaScript/section 9] 03 - λ―Έλ‘ νμ (0) | 2022.11.20 |