Untitled
fun solution(R: Array<String>): Int { val n = R.size val m = R[0].length val grid = Array(n) { BooleanArray(m) { false } } var x = 0 var y = 0 var dx = 1 var dy = 0 var cleanedCount = 0 while (true) { if (!grid[x][y]) { grid[x][y] = true cleanedCount++ } val nextX = x + dx val nextY = y + dy if (nextX in 0 until n && nextY in 0 until m && R[nextX][nextY] == '.') { x = nextX y = nextY } else { // Rotate clockwise when { dx == 1 && dy == 0 -> { dx = 0; dy = 1 } dx == 0 && dy == 1 -> { dx = -1; dy = 0 } dx == -1 && dy == 0 -> { dx = 0; dy = -1 } dx == 0 && dy == -1 -> { dx = 1; dy = 0 } } // Check if the robot is stuck in a corner or against a wall if ((x == 0 || x == n - 1 || R[x + dx][y] == 'X') && (y == 0 || y == m - 1 || R[x][y + dy] == 'X') && (x == 0 || y == 0 || x == n - 1 || y == m - 1 || R[x + dx][y + dy] == 'X')) { break // Robot is stuck, terminate } } } return cleanedCount }
Leave a Comment