문제의 조건은 총 3가지이다.
1) 가로로 봤을 때 숫자가 중복되면 안됨.
2) 세로로 봤을 때 숫자가 중복되면 안됨.
3) 칸을 3 X 3으로 나눈 것에서 숫자가 중복되면 안됨.
- 위 문제의 조건에 맞게 각각의 경우에 대해 구현함.
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
table = []
# Rule 1
for i in range(9) :
tmp = []
for b in board :
if b[i] != '.' :
if b[i] in tmp :
return False
else :
tmp.append(b[i])
# Rule 2
for b in board :
tmp = []
for i in range(len(b)) :
if b[i] != '.' :
if b[i] in tmp :
return False
else :
tmp.append(b[i])
# Rule 3
for r in range(0, 9, 3) : # Row
for c in range(0, 9, 3) : # Column
tmp = []
for i in range(3) :
for j in range(3) :
t = board[r+i][c+j]
if t != '.' :
if t in tmp :
return False
else :
tmp.append(t)
return True