이 문제는 (0,0) 위치에서부터 4방향을 움직이되 움직인 위치의 값이 이전에 지나온 값이라면 갈 수 없습니다. 따라서 dxdy 테크닉을 통해 2차원 배열을 재귀로 움직이면서 현재 위치의 값을 visited 변수에 저장하고 이동하면서 참조한 뒤, visited 값이 true라면 재귀를 멈추면 됩니다.
for (let i = 0; i < 4; i++) { const nx = x + dx[i]; const ny = y + dy[i];
// 이동할 좌표가 없을 경우 continue if (nx < 0 || nx >= arr[0].length || ny < 0 || ny >= arr.length) continue; // 이동한 좌표의 알파벳의 아스키코드가 true면 이미 지나온 블록. continue if (visited[arr[ny][nx].charCodeAt() - 65]) continue;