카테고리 없음

[SWEA][Python] 1974 스도쿠 검증

findTheValue 2021. 8. 15. 18:54

가로 세로 박스 총 9개지점에서 검사해줬따.

import sys
input = sys.stdin.readline

def check(x,y,matrix):
    col_check_box = {i:False for i in range(1,10)}
    row_check_box = {i:False for i in range(1,10)}
    box_check = {i:False for i in range(1,10)}
    # 행 검사
    for num in matrix[x]:
        if not col_check_box[num]:
            col_check_box[num] = True
        else:
            return False
    # 열 검사
    for j in range(9):
        num = matrix[j][y]
        if not row_check_box[num]:
            row_check_box[num] = True
        else:
            return False
    # 박스 검사
    for i in range(3):
        for j in range(3):
            num = matrix[(x+i)%3][(y+j)%3]
            if not box_check[num]:
                box_check[num] = True
            else:
                return False
    return True

def check_sudoku(s):
    # 0,0에서 1,3씩 늘려가며 8이상 넘어가면 8로 나눈 나머지로 바꿔줌 총 9번 검사.
    i = 0
    for j in range(0,24,3):
        if check(i,j%8,s):
            i += 1
        else:
            return 0
    else:
        return 1 if check(8,8,s) else 0



for test in range(1,int(input())+1):
    sudoku = [list(map(int,input().split())) for _ in range(9)]
    print(f'#{test} {check_sudoku(sudoku)}')