Taking on a new challenge: solving GeeksforGeeks POTD daily and sharing my solutions! π»π₯
The goal: sharpen problem-solving skills, level up coding, and learn something new every day. Follow my journey! π
100DaysOfCode #CodingChallenge #ProblemSolving #GeeksforGeeks #DeveloperJourney
Problem:
https://www.geeksforgeeks.org/problems/replace-os-with-xs0052/1
Replace O's with X's
Difficulty: Medium Accuracy: 34.0%
You are given a grid[][] of size n*m, where every element is either 'O' or 'X'. You have to replace all 'O' or a group of 'O' with 'X' that are surrounded by 'X'.
A 'O' (or a set of 'O') is considered to be surrounded by 'X' if there are 'X' at locations just below, just above, just left and just right of it.
Examples:
Input:
grid[][] = [['X', 'X', 'X', 'X'],
['X', 'O', 'X', 'X'],
['X', 'O', 'O', 'X'],
['X', 'O', 'X', 'X'],
['X', 'X', 'O', 'O']]
Output:
[['X', 'X', 'X', 'X'],
['X', 'X', 'X', 'X'],
['X', 'X', 'X', 'X'],
['X', 'X', 'X', 'X'],
['X', 'X', 'O', 'O']]
Explanation: We only changed those 'O' that are surrounded by 'X'
Input:
grid[][] = [['X', 'O', 'X', 'X'],
['X', 'O', 'X', 'X'],
['X', 'O', 'O', 'X'],
['X', 'O', 'X', 'X'],
['X', 'X', 'O', 'O']]
Output:
[['X', 'O', 'X', 'X'],
['X', 'O', 'X', 'X'],
['X', 'O', 'O', 'X'],
['X', 'O', 'X', 'X'],
['X', 'X', 'O', 'O']]
Explanation: There's no 'O' that's surround by 'X'.
Input:
grid[][] = [['X', 'X', 'X'],
['X', 'O', 'X'],
['X', 'X', 'X']]
Output:
[['X', 'X', 'X'],
['X', 'X', 'X'],
['X', 'X', 'X']]
Explanation: There's only one 'O' that's surround by 'X'.
Constraints:
1 β€ grid.size() β€ 100
1 β€ grid[0].size() β€ 100
Solution:
class Solution:
def fill(self, grid):
n, m = len(grid), len(grid[0])
def dfs(i, j):
if i < 0 or i >= n or j < 0 or j >= m or grid[i][j] != 'O':
return
grid[i][j] = '#'
dfs(i + 1, j)
dfs(i - 1, j)
dfs(i, j + 1)
dfs(i, j - 1)
for i in range(n):
if grid[i][0] == 'O':
dfs(i, 0)
if grid[i][m - 1] == 'O':
dfs(i, m - 1)
for j in range(m):
if grid[0][j] == 'O':
dfs(0, j)
if grid[n - 1][j] == 'O':
dfs(n - 1, j)
for i in range(n):
for j in range(m):
if grid[i][j] == 'O':
grid[i][j] = 'X'
elif grid[i][j] == '#':
grid[i][j] = 'O'
return grid
Top comments (0)