접근
- 스도쿠에 문제 풀이 방식을 알고 있으면 가볍게 풀 수 있을 것으로 보임
- 문제 접근 방식은 매우 다양함. 논리를 세우고 방법이 나오지 않는다면 처음부터 다시 다른 방향으로 빠르게 바꾸는 것 또한 지혜인 듯 함
- set 함수를 응용하여 코드를 간결화하는 것이 좋음
문제 링크
https://leetcode.com/problems/valid-sudoku/description/
솔루션
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
SUBSQ = [[[] for _ in range(3)] for _ in range(3)]
# check ROWS
for i in range(9):
ROW = []
for j in range(9):
if board[i][j] != ".":
ROW.append(board[i][j])
SUBSQ[i//3][j//3].append(board[i][j])
if len(ROW) != len(set(ROW)):
return False
# check COLS
for i in range(9):
COL = []
for j in range(9):
if board[j][i] != ".":
COL.append(board[j][i])
if board[j][i] not in SUBSQ[j//3][i//3]:
SUBSQ[j//3][i//3].append(board[j][i])
if len(COL) != len(set(COL)):
return False
# check SUBSQUARES
for i in range(3):
for j in range(3):
if len(SUBSQ[i][j]) != len(set(SUBSQ[i][j])):
return False
return True
'컴퓨터공학 & 정보통신 > 알고리즘 문제 풀이' 카테고리의 다른 글
[LeetCode] 45. Jump Game II (0) | 2023.04.03 |
---|---|
[LeetCode] 55. Jump Game (0) | 2023.04.03 |
[LeetCode] 79. Word Search (0) | 2023.03.26 |
[LeetCode] 200. Number of Islands (0) | 2023.03.26 |
[LeetCode] 463. Island Perimeter (0) | 2023.03.25 |