[BOJ] Q2239 스도쿠
[BOJ] Q2239 스도쿠
Question
Language: Python
Difficulty: Gold 4
스도쿠 문제Q2580와 동일한 풀이다.
Solution
def is_true(num,row,col):
#해당 행 검사
for i in range(9):
if board[row][i]==num:
return False
#해당 열 검사
for i in range(9):
if board[i][col]==num:
return False
start_row=(row//3)*3
start_col=(col//3)*3
for i in range(start_row,start_row+3):
for j in range(start_col,start_col+3):
if board[i][j] == num:
return False
return True
def dfs(blank_points,index):
global candidates
if index == len(blank_points):
for i in range(9):
print("".join(map(str,board[i])))
exit(0)
row,col=blank_points[index]
for i in range(1,10):
if is_true(i,row,col):
board[row][col]=i
dfs(blank_points,index+1)
board[row][col]=0
def solution():
blank_points=[]
for row in range(9):
for col in range(9):
if board[row][col]==0:
blank_points.append((row,col))
dfs(blank_points,0)
if __name__ == "__main__":
board=[list(map(int,input().strip())) for _ in range(9)]
candidates=[]
solution()
댓글남기기