728x90
λ°μν
π 03 - λ―Έλ‘ νμ(DFS)
7*7 격μν λ―Έλ‘λ₯Ό νμΆνλ κ²½λ‘μ κ°μ§μλ₯Ό μΆλ ₯νλ λ¬Έμ μ΄λ€. μΆλ°μ μ 격μμ (1, 1) μ’νμ΄κ³ , νμΆ λμ°©μ μ (7, 7) μ’νμ΄λ€. 격μνμ 1μ λ²½μ΄κ³ , 0μ ν΅λ‘μ΄λ€. 격μνμ μμ§μμ μνμ’μ°λ‘λ§ μμ§μΈλ€. λ―Έλ‘κ° λ€μκ³Ό κ°λ€λ©΄
μμ μ§λμμ μΆλ°μ μμ λμ°©μ κΉμ§ κ° μ μλ λ°©λ²μ μλ 8κ°μ§ μ΄λ€.
π νμ΄ λ°©λ²
nx - μ΄λν ν, ny - μ΄λν μ΄
- μνμ’μ°λ‘λ§ μμ§μΌ μ μμΌλ―λ‘ μμ§μΌ μ μλ κ²½μ°μ μλ 4κ°μ§μ΄λ€.
- μ¬κ·λ₯Ό λλ©΄μ λ€μμ μ΄λν μ’νκ° κ²©μνμ λ²μ΄λμ§ μλμ§ νμΈν λ€μ μ΄λμ΄ κ°λ₯ν ν΅λ‘κ° λ§λμ§ νμΈ ν΄μΌ νλ€.
- board[nx][ny] (μ΄λν μ’ν)κ° 0μ΄λΌλ©΄ μ΄λμ΄ κ°λ₯ν κ²μ΄λ―λ‘ μ΄λνκ³ μ΄λνμμ λνλ΄κΈ° μν΄ board[nx][ny]λ₯Ό 1λ‘ μ¬ ν λΉνλ€. (μλ κΈΈμ λ°λ‘ λμκ°λ λΆμμ¬λ₯Ό λ§κΈ° μν¨)
- DFS() ν¨μκ° μ’ λ£νκ³ λλ©΄ board[nx][ny]λ₯Ό 0μΌλ‘ μ¬ ν λΉν¨μΌλ‘μ¨ λ€μμ μ΄λμ΄ κ°λ₯ν μ μλλ‘ ν΄μ€λ€. (λ°±νΈλνΉ)
- xμ yκ° 6μ΄λΌλ©΄ νμΆ λμ°©μ (6, 6) μ’νμ μλ κ²μ΄λ―λ‘ answer++μ ν΄μ€λ€.
μ£Όμ μ¬νβ μ¬κ· ν¨μλ₯Ό νΈμΆνκΈ° μ μ board[0][0] (μΆλ°μ )μ 1λ‘ μ΄κΈ°ν ν΄μΌ νλ€.
function solution(board) {
let answer = 0;
let dx = [-1, 0, 1, 0];
let dy = [0, 1, 0, -1];
function DFS(x, y) {
if (x === 6 && y === 6) {
answer++;
} else {
for (let i = 0; i < 4; i++) {
let nx = x + dx[i];
let ny = y + dy[i];
if (nx >= 0 && ny >= 0 && nx <= 6 && ny <= 6) {
if (board[nx][ny] === 0) {
board[nx][ny] = 1;
DFS(nx, ny);
board[nx][ny] = 0;
}
}
}
}
}
// μΆλ°μ 체ν¬
board[0][0] = 1;
DFS(0, 0);
return answer;
}
let arr = [
[0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 1, 0, 0, 0],
[1, 1, 0, 1, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 1],
[1, 1, 0, 1, 1, 0, 0],
[1, 0, 0, 0, 0, 0, 0],
];
console.log(solution(arr));
'Algorithm > μΈνλ°(inflearn)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JavaScript/section 9] 05 - μ‘μμ§ μ°ΎκΈ° (0) | 2022.11.21 |
---|---|
[JavaScript/section 9] 04 - μ΄μ§νΈλ¦¬ λμ΄μ°μ νμ(BFS) (0) | 2022.11.21 |
[JavaScript/section 9] 02 - κ²½λ‘ νμ(μΈμ 리μ€νΈ) (0) | 2022.11.16 |
[JavaScript/section 9] 01 - κ²½λ‘ νμ(μΈμ νλ ¬) (0) | 2022.11.15 |
[JavaScript/section 8] 15 - μλ€μ μ‘°ν© (0) | 2022.11.14 |