# [Solved] Determine if a 9 x 9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules: Each row must contain the digits 1-9 without repetition.

## Question

Determine if a `9 x 9` Sudoku board is valid. Only the filled cells need to be validated according to the following rules:

1. Each row must contain the digits `1-9` without repetition.
2. Each column must contain the digits `1-9` without repetition.
3. Each of the nine `3 x 3` sub-boxes of the grid must contain the digits `1-9` without repetition.

Note:

• A Sudoku board (partially filled) could be valid but is not necessarily solvable.
• Only the filled cells need to be validated according to the mentioned rules.

Example 1:

```Input: board =
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Output: true
```

Example 2:

```Input: board =
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Output: false
Explanation: Same as Example 1, except with the 5 in the top left corner being modified to 8. Since there are two 8's in the top left 3x3 sub-box, it is invalid.
```

Constraints:

• `board.length == 9`
• `board[i].length == 9`
• `board[i][j]` is a digit `1-9` or `'.'`.

## Python Solution

```class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
d = set()

for i in range(9):
for j in range(9):
if board[i][j]=='.':
pass
elif ((str(board[i][j]) + ' r ' + str(i)) not in d) and ((str(board[i][j]) + ' c ' + str(j)) not in d) and ((str(board[i][j]) + ' b ' + str(i//3)+str(j//3)) not in d):
d.add(str(board[i][j]) + ' r ' + str(i))
d.add(str(board[i][j]) + ' c ' + str(j))
d.add(str(board[i][j]) + ' b ' + str(i//3)+str(j//3))
else:
return (False)

return True
```