1974. 스도쿠 검증

Sarah·2021년 9월 6일
0

SWE

목록 보기
16/19

문제출처 : SW Expert Academy

문제

입력으로 9 X 9 크기의 스도쿠 퍼즐의 숫자들이 주어졌을 때, 위와 같이 겹치는 숫자가 없을 경우, 1을 정답으로 출력하고 그렇지 않을 경우 0 을 출력한다.

코드


import sys
sys.stdin = open('input.txt')

# 3x3 box 검사 함수 정의
def box(x_index, y_index):
    global arr, numbers, result_box
    temp = []
    for i in range(3):
        for j in range(3):
            temp.append(arr[x_index + i][y_index + j])
    temp_set = set(temp)
    if temp_set == numbers:
        return result_box
    else:
        result_box = 0
        return result_box

T = int(input())

for tc in range(1,T+1):
    arr = [list(map(int,input().split())) for _ in range(9)]
    numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9}
    result_row = 1
    result_col = 1
    result_box = 1
    result = 1

    # 가로줄 검사
    for i in range(9):
        row_set = set(arr[i])
        if row_set == numbers:
            pass
        else:
            result_row = 0
            break

    # 세로줄 검사
    for i in range(9):
        col_set = {}
        col_list = []
        for j in range(9):
            col_list.append(arr[j][i])
        col_set = set(col_list)
        if col_set == numbers:
            pass
        else:
            result_col = 0
            break

    # 3x3 box 검사
    for i in range(9):
        for j in range(9):
            if i % 3 == 0 and j % 3 == 0:
                x_index = i
                y_index = j
                result = box(x_index, y_index)

    # 각 검사에서 이상이 있었으면 result=0으로
    if result_row + result_col + result_box < 3:
        result = 0


    print('#{} {}'.format(tc, result))

어려웠던 점.

.

profile
2021.06 ~

0개의 댓글