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-9without repetition.
- Each column must contain the digits 1-9without repetition.
- Each of the nine 3 x 3sub-boxes of the grid must contain the digits1-9without 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-9or- '.'.
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 
								 
							








