-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2239.py
51 lines (39 loc) · 1016 Bytes
/
2239.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 스도쿠
def row_check(r, num):
for x in range(9):
if num == board[r][x]:
return False
return True
def col_check(c, num):
for x in range(9):
if num == board[x][c]:
return False
return True
def box_check(r, c, num):
nc = (c // 3) * 3
nr = (r // 3) * 3
for x in range(3):
for y in range(3):
if board[nr + x][nc + y] == num:
return False
return True
def dfs(depth):
if depth >= len(zeros):
for k in range(9):
print("".join(map(str, board[k])))
exit()
nr, nc = zeros[depth]
for j in range(1, 9 + 1):
if row_check(nr, j) and col_check(nc, j) and box_check(nr, nc, j):
board[nr][nc] = j
dfs(depth + 1)
board[nr][nc] = 0
board = []
zeros = []
for i in range(9):
line = list(map(int, input()))
for j in range(len(line)):
if line[j] == 0:
zeros.append((i, j))
board.append(line)
dfs(0)