LeetCode 솔루션 분류

[11/23] 36. Valid Sudoku

컨텐츠 정보

본문

Medium
7416836Add to ListShare

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:

250px-Sudoku-by-L2G-20050714.svg.png
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 '.'.
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
LeetCode 솔루션 357 / 1 페이지
번호
제목
이름

최근글


인기글


새댓글


Stats


  • 현재 접속자 954 명
  • 오늘 방문자 5,751 명
  • 어제 방문자 6,932 명
  • 최대 방문자 14,831 명
  • 전체 회원수 1,481 명
알림 0