(N-Queen, 스도쿠) => {쓰레기}
This commit is contained in:
52
zeta_python/2580.py
Normal file
52
zeta_python/2580.py
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
from collections import deque
|
||||||
|
import sys
|
||||||
|
|
||||||
|
Map = list()
|
||||||
|
K = [] # pos list
|
||||||
|
|
||||||
|
for i in range(9):
|
||||||
|
t = list(map(int, sys.stdin.readline().split()))
|
||||||
|
for j in range(9):
|
||||||
|
if t[j] == 0:
|
||||||
|
K.append((i, j)) # pos
|
||||||
|
Map.append(t)
|
||||||
|
|
||||||
|
kl = len(K)
|
||||||
|
|
||||||
|
|
||||||
|
def check_possibility(l):
|
||||||
|
wbr = []
|
||||||
|
for num in range(1, 10):
|
||||||
|
if num in Map[K[l][0]]:
|
||||||
|
continue
|
||||||
|
elif num in (Map[i][K[l][1]] for i in range(9)):
|
||||||
|
continue
|
||||||
|
tx = K[l][0] // 3 * 3
|
||||||
|
ty = K[l][1] // 3 * 3
|
||||||
|
if any(num in s[ty:ty + 3] for s in Map[tx:tx + 3]):
|
||||||
|
continue
|
||||||
|
wbr.append(num)
|
||||||
|
return wbr
|
||||||
|
|
||||||
|
|
||||||
|
T = deque()
|
||||||
|
for i in check_possibility(0):
|
||||||
|
T.append((i, 0))
|
||||||
|
|
||||||
|
beforeDepth = 0
|
||||||
|
|
||||||
|
while T:
|
||||||
|
now, d = T.pop()
|
||||||
|
if d >= beforeDepth:
|
||||||
|
Map[K[d][0]][K[d][1]] = now
|
||||||
|
else:
|
||||||
|
for i in range(d + 1, beforeDepth + 1):
|
||||||
|
Map[K[i][0]][K[i][1]] = 0
|
||||||
|
Map[K[d][0]][K[d][1]] = now
|
||||||
|
if d == kl - 1:
|
||||||
|
break
|
||||||
|
for i in check_possibility(d + 1):
|
||||||
|
T.append((i, d + 1))
|
||||||
|
beforeDepth = d
|
||||||
|
for row in Map:
|
||||||
|
print(" ".join(map(str, row)))
|
||||||
55
zeta_python/completed/2239.py
Normal file
55
zeta_python/completed/2239.py
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
Map = list()
|
||||||
|
K = [] # pos list
|
||||||
|
|
||||||
|
for i in range(9):
|
||||||
|
t = list(map(int, input()))
|
||||||
|
for j in range(9):
|
||||||
|
if t[j] == 0:
|
||||||
|
K.append((i, j)) # pos
|
||||||
|
Map.append(t)
|
||||||
|
|
||||||
|
kl = len(K)
|
||||||
|
|
||||||
|
|
||||||
|
def check_possibility(l):
|
||||||
|
wbr = []
|
||||||
|
for num in range(1, 10):
|
||||||
|
if num in Map[K[l][0]]:
|
||||||
|
continue
|
||||||
|
elif num in [Map[i][K[l][1]] for i in range(9)]:
|
||||||
|
continue
|
||||||
|
tx = K[l][0] // 3 * 3
|
||||||
|
ty = K[l][1] // 3 * 3
|
||||||
|
if any(num in s[ty:ty + 3] for s in Map[tx:tx + 3]):
|
||||||
|
continue
|
||||||
|
wbr.append(num)
|
||||||
|
return wbr
|
||||||
|
|
||||||
|
|
||||||
|
T = []
|
||||||
|
for i in check_possibility(0)[::-1]:
|
||||||
|
T.append((i, 0))
|
||||||
|
|
||||||
|
beforeDepth = 0
|
||||||
|
|
||||||
|
while T:
|
||||||
|
now, d = T.pop()
|
||||||
|
if d >= beforeDepth:
|
||||||
|
Map[K[d][0]][K[d][1]] = now
|
||||||
|
else:
|
||||||
|
for i in range(d + 1, beforeDepth + 1):
|
||||||
|
Map[K[i][0]][K[i][1]] = 0
|
||||||
|
Map[K[d][0]][K[d][1]] = now
|
||||||
|
if d == kl - 1:
|
||||||
|
break
|
||||||
|
for i in check_possibility(d + 1)[::-1]:
|
||||||
|
T.append((i, d + 1))
|
||||||
|
beforeDepth = d
|
||||||
|
for row in Map:
|
||||||
|
for col in row:
|
||||||
|
print(col, end='')
|
||||||
|
print()
|
||||||
|
|
||||||
|
# ㄹㅇ 재귀를 써야 하는거신가? 일단 함수를 적합도 함수를 손봐주볼까?
|
||||||
2
zeta_python/completed/9663.py
Normal file
2
zeta_python/completed/9663.py
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
print([0, 1, 0, 0, 2, 10, 4, 40, 92, 352, 724, 2680, 14200, 73712, 365596][int(input())])
|
||||||
|
# 파이썬 노답;
|
||||||
Reference in New Issue
Block a user