-
36. Valid SudokuLeetcode 2024. 4. 13. 16:47
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.
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 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 '.'.class Solution: def isValidSudoku(self, board: List[List[str]]) -> bool: def check_row_and_col(r, c, n): for i in range(9): if (board[r][i] == n and i != c) or (board[i][c] == n and i != r): return False # check rect start_row = (r // 3) * 3 start_col = (c // 3) * 3 for i in range(start_row, start_row + 3): for j in range(start_col, start_col + 3): if board[i][j] == n and (i != r or j != c): return False return True for i in range(9): for j in range(9): if board[i][j] != ".": if not check_row_and_col(i, j, board[i][j]): return False return True스도쿠를 채우는 문제가 아니라
이 스도쿠가 유효한지, 무효한지만 검사하면 되는 문제
discussion을 보니
비교해야하는 인덱스 값이 현재 체크하는 인덱스값과 동일한지를 체크해야 하는 부분을
놓치는 부분이 많은 것 같다.
나도 놓쳐서 애먹었다 ㅋㅋ..
'Leetcode' 카테고리의 다른 글
35. Search Insert Position (0) 2024.04.13 30. Substring with Concatenation of All Words (0) 2021.06.21 31. Next Permutation (0) 2021.06.16 29. Divide Two Integers (0) 2021.05.25 28. Implement strStr() (0) 2021.05.25