[SW Expert Academy] D2 1974번 스도쿠 검증(python)

good_da22·2022년 5월 16일
0

SW Expert Academy

목록 보기
9/20
post-thumbnail

SW Expert Academy

1974번 스도쿠 검증 / Python

문제

풀이과정

가로 줄의 스도쿠 성립 여부
세로 줄의 스도쿠 성립 여부
박스의 스도쿠 성립 여부
인덱스 조작을 통한 접근, 각 성립 여부를 확인하기 위한 리스트
한 번이라도 틀리는 경우 더 이상 검사 필요 없다
이중 반복문 탈출

소스코드

#정답일 경우 1, 오답일 경우 0

T = int(input())

result = []
for t in range(T):
    testcase = []
    for _ in range(9):
        arr = list(map(int, input().split()))
        testcase.append(arr)
    verify = 1
    breaker = False
    for i in range(9):
        row_verify = [] #가로 검증
        col_verify = [] #세로 검증
        box_verify = [] #3*3 박스 검증
        for j in range(9):
            if testcase[i][j] not in row_verify and \
                    testcase[j][i] not in col_verify and \
                    testcase[i//3 * 3 + j % 3][i//3 * 3 + j//3] not in box_verify:
                row_verify.append(testcase[i][j])
                col_verify.append(testcase[j][i])
                box_verify.append(testcase[i//3 * 3 + j % 3][i//3 * 3 + j//3]) #3*3 box를 차례로 검사하기 위한 인덱스 접근
            else:
                verify = 0 #한번이라도 틀리면 더 이상 검사할 필요 없다.
                breaker = True
                break
        if breaker: #이중 반복문 탈출
            break
    result.append(verify)

for t in range(T):
    print("#{} {}".format((t+1), result[t]))
profile
dev blog

0개의 댓글