1
var countUnguarded = function (m, n, guards, walls) {2
let board = new Array(m).fill(0).map((_) => new Array(n).fill(0));16
for (let [guardRow, guardCol] of guards) board[guardRow][guardCol] = 1;18
for (let [wallRow, wallCol] of walls) board[wallRow][wallCol] = 2;20
for (let [guardRow, guardCol] of guards) {21
//Loop through row with the same col22
//Go down from current row23
let row = guardRow + 1;25
//Stop if you encounter a wall or guard26
if (board[row][guardCol] == 1 || board[row][guardCol] == 2) break;27
board[row][guardCol] = 3;30
//Go up from current row33
if (board[row][guardCol] == 1 || board[row][guardCol] == 2) break;34
board[row][guardCol] = 3;38
//Loop through col with the same row39
//Go right from current col40
let col = guardCol + 1;42
if (board[guardRow][col] == 1 || board[guardRow][col] == 2) break;43
board[guardRow][col] = 3;47
//Go left from current col50
if (board[guardRow][col] == 1 || board[guardRow][col] == 2) break;51
board[guardRow][col] = 3;56
//Count the free cells58
for (let i = 0; i < m; i++) {59
for (let j = 0; j < n; j++) {60
if (board[i][j] == 0) freeCount++;