딕셔너리를 이용하여 해결했다. 있으면 false를 리턴하고 없으면 추가했다.
from collections import defaultdict
class Solution:
def isValidSudoku(self, board):
N = 9
row = defaultdict(list)
col = defaultdict(list)
box = defaultdict(list)
for r in range(N):
for c in range(N):
val = board[r][c]
if val == '.':
continue
if val in row[r]:
return False
row[r].append(val)
if val in col[c]:
return False
col[c].append(val)
idx = (r // 3) * 3 + c // 3
if val in box[idx]:
return False
box[idx].append(val)
return True