내 코드
T = int(input())
for tc in range(1, T +1) :
sudoku = [list(map(int, input().split())) for _ in range(9)]
# 가로, 세로, 3*3 체크
# 잘 나오면 1, 그렇지 않으면 0
# 포인트는 각각 [0] * 9 로 채워진 배열을 만드는 것
# 가로
flag = 1
for x in range(9): # 9줄 체크
check = [0] * 9 # [ 0 0 0 0 0 0 0 0 0 ]
for y in range(9):
check[sudoku[x][y]-1] = 1
result = 1
for z in range(9): # 0 1 2 3 4 5 6 7 8 [0,1,1,1,1..]
result *= check[z] # 0이 남아있으면 곱하면 0이 되겠지?
if result == 0 :
flag = 0
# 세로
for x in range(9): # 9줄 체크
check = [0] * 9 # [ 0 0 0 0 0 0 0 0 0 ]
for y in range(9):
check[sudoku[y][x]-1] = 1
result = 1
for z in range(9): # 0 1 2 3 4 5 6 7 8
result *= check[z]
if result == 0 :
flag = 0
# 3*3
for x in range(0, 9, 3): # 0 3 6
for y in range(0, 9, 3): # 0 3 6
check = [0] * 9 # [ 0 0 0 0 0 0 0 0 0 ]
for x1 in range(x, x+3) : # 0 1 2 # 여기서 맨날 틀리더라..?
for y1 in range(y, y+3): # 0 1 2
check[sudoku[x1][y1]-1] = 1
result = 1
for z in range(9) :
result *= check[z]
if result == 0:
flag = 0
print('#{} {}'.format(tc, flag))
포인트👑
👆 가로, 세로, 3*3 각각 0으로 채워진 배열을 만들어 주는 것
✌ 0이 남았다면 곱해서 0이 된다
라는 아이디어