function solution(board) { var answer = 0; const diff=[[0,1],[1,0],[0,-1],[-1,0]] let cur=[0,0] let dirIdx = 0 while (true) { let canClean = false board[cur[0]][cur[1]] = 2 answer++ for (let i=dirIdx;i<dirIdx+2;i++) { const [ni,nj] = [cur[0]+diff[i%4][0],cur[1]+diff[i%4][1]] if (ni>=0 && ni<board.length && nj>=0 && nj<board[0].length && board[ni][nj]===0) { canClean=true cur=[ni,nj] dirIdx=i break } } if (!canClean) { break } } return answer; }