lc-go/solutions/1/q130/solution.go
2026-01-17 12:51:40 +09:00

37 lines
654 B
Go

package q130
func markI(board [][]byte, x, y int) {
w, h := len(board[0]), len(board)
if x < 0 || y < 0 || x >= w || y >= h || board[y][x] != 'O' {
return
}
board[y][x] = 'I'
markI(board, x, y+1)
markI(board, x, y-1)
markI(board, x+1, y)
markI(board, x-1, y)
}
func solve(board [][]byte) {
for i := range len(board) {
markI(board, 0, i)
markI(board, len(board[0])-1, i)
}
for i := range len(board[0]) {
markI(board, i, 0)
markI(board, i, len(board)-1)
}
for y := range board {
for x := range board[0] {
switch board[y][x] {
case 'O':
board[y][x] = 'X'
case 'I':
board[y][x] = 'O'
}
}
}
}
var _ = solve