반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 36 | Valid Sudoku | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/valid-sudoku/
문제
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.
조건
- board.length == 9
- board[i].length == 9
- board[i][j] is a digit 1-9 or '.'.
내 풀이
처음에는 문제에서 주어진 스도쿠를 풀어야 하는 줄 알고 식겁했다.
하지만 현재 주어진 숫자들만 가지고 푸는 것이었다. (예를 들면, 예제 2번에서는 이미 첫번째 열에 8이 두번 나오므로 스도쿠가 성립하지 않는다.)
따라서 각 행, 열, 그리고 $3 \times 3$ 사각형별로 1~9의 숫자가 중복되는 지 확인하면 된다.
코드
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
rows = defaultdict(set)
cols = defaultdict(set)
squares = defaultdict(set)
for h in range(9):
for w in range(9):
if board[h][w] == '.':
continue
if board[h][w] in rows[h] or board[h][w] in cols[w] or board[h][w] in squares[(h//3, w//3)]:
return False
rows[h].add(board[h][w])
cols[w].add(board[h][w])
squares[(h//3, w//3)].add(board[h][w])
return True
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 1207 | Unique Number of Occurrences | Python (0) | 2022.11.30 |
---|---|
[LeetCode] 2225 | Find Players With Zero or One Losses (0) | 2022.11.28 |
[LeetCode] 1926 | Nearest Exit from Entrance in Maze | Python (0) | 2022.11.21 |
[LeetCode] 223 | Rectangle Area | Python (0) | 2022.11.17 |
[LeetCode] 374 | Guess Number Higher or Lower | Python (0) | 2022.11.16 |
Comments