SWEA (SW Expert Academy)/D2

[SWEA/D2] 1974 스도쿠 검증

hellosonic 2023. 4. 21. 19:34

문제 바로가기

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

나의 코드 및 설명

t = int(input())
for test_case in range(1, t+1):
    board = []
    for _ in range(9):
        board.append(list(map(int, input().split())))
    
    must = list(range(1,10))
    line_check = -1
    for i in range(9):
        garo_check = []
        sero_check = []
        for j in range(9):
            garo_check.append(board[i][j]) 
            sero_check.append(board[j][i])
        garo_check.sort()
        sero_check.sort()
        if garo_check == must and sero_check == must:
            line_check = 1
        else:
            line_check = 0
            break

    box_check = -1
    for i in range(3): # 0, 1, 2 / 0, 3, 6이 되어야 함.
        for j in range(3):
            temp_list = []
            for k in range(3):
                temp_list += board[(i*3)+k][j*3:(j*3)+3]
            temp_list.sort()
            if temp_list == must:
                box_check = 1
            else:
                box_check = 0
                break
        #반드시 상위 for문에 대해 break 처리 해주어야 함
        if box_check == 0:
            break

    if line_check == 1 and box_check == 1:
        print("#{} {}".format(test_case, 1))
    else:
        print("#{} {}".format(test_case, 0))

피드백

다중 for문에서 하위 for문에 대해 break 처리를 할 시 반드시 상위 for문에서도 break 처리를 해주어야 한다는 것을 명심하자.