-
2580 스도쿠코테 대비 python/백준 2023. 4. 14. 16:16
https://www.acmicpc.net/problem/2580
2580번: 스도쿠
스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루
www.acmicpc.net
graph=[list(map(int,input().split())) for _ in range(9)] loc=[] for i in range(9): for j in range(9): if graph[i][j]==0: loc.append((i,j)) ##가로 체크 def row(cnt,x): for i in range(9): if graph[x][i]==cnt: return False return True #세로체크 def col(cnt,y): for i in range(9): if graph[i][y]==cnt: return False return True #사각형 안에 체크 def rect(x,y,cnt): ##핵심 표현 어느 3바이3 안에 있어?? x=x//3*3 y=y//3*3 for i in range(3): for j in range(3): if graph[x+i][y+j] ==cnt: return False return True def dfs(num): #만약 빈칸의 갯수가 num 즉 다완료 했으면 끝내기 if num == len(loc): for i in range(9): print(*graph[i]) exit(0) #빈칸인거 채워나가기 x= loc[num][0] y= loc[num][1] for i in range(1,10): if row(i,x) and rect(x,y,i) and col(i,y): graph[x][y]=i dfs(num+1) #만약 다 만족하지 않으면 백트레킹 graph[x][y]=0 dfs(0)
'코테 대비 python > 백준' 카테고리의 다른 글
[복습] 14502 연구소 (0) 2023.04.17 18115 카드 놓기 (0) 2023.04.16 복습 1935 후위 표기식2 (0) 2023.04.14 1181 단어 정렬 (0) 2023.04.11 14503 로봇 청소기 (0) 2023.04.11