LeetCode 솔루션 분류
[11/23] 36. Valid Sudoku
본문
Medium
7416836Add to ListShareDetermine 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. - Each column must contain the digits
1-9
without repetition. - Each of the nine
3 x 3
sub-boxes of the grid must contain the digits1-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 digit1-9
or'.'
.
Accepted
961,603
Submissions
1,669,639
관련자료
-
링크
댓글 1
학부유학생님의 댓글
- 익명
- 작성일
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
ROW, COL = len(board), len(board[0])
# check each col
for r in range(ROW):
check = [0]*10
for c in range(COL):
if board[r][c].isdigit():
if check[int(board[r][c])]: return False
check[int(board[r][c])] += 1
# check each row
for c in range(COL):
check = [0]*10
for r in range(ROW):
if board[r][c].isdigit():
if check[int(board[r][c])]: return False
check[int(board[r][c])] += 1
for row in range(3):
for col in range(3):
start_r = row*3
start_c = col*3
check = [0]*10
for r in range(start_r, start_r+3):
for c in range(start_c, start_c+3):
if board[r][c].isdigit():
if check[int(board[r][c])]: return False
check[int(board[r][c])] += 1
return True