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

MEIN_FIGUR·2021년 7월 30일
0

SWEA_문제풀이

목록 보기
5/21
post-custom-banner

📌풀이


내가 쓴 풀이(성공)

#가로 성공 여부
def width(sudoku):
    for i in range(9):
        flag = 0
        for num in range(1, 10):
            if sudoku[i].count(num) != 1:
                flag = 1
                break
        if flag :
            return 0
    return 1

#세로 성공 여부
def height(sudoku):
    for x in range(9):
        flag = 0
        check_num = [0 for _ in range(9)]
        for y in range(9):
            check_num[sudoku[y][x]-1] += 1
        
        for num in check_num :
            if num != 1:
                flag = 1
                break
        
        if flag :
            return 0
    return 1
        
#정사각형 형태 성공 여부
def square(sudoku):
    for i in range(3):
        for j in range(3):
            flag = 0
            check_num = [0 for _ in range(9)]
            for y in range(3*i, 3*i + 3):
                for x in range(3*j, 3*j+3):
                    check_num[sudoku[y][x]-1] += 1
            
            for num in check_num:
                if num != 1:
                    flag = 1
                    break
            
            if flag :
                return 0
    return 1
        
        


T = int(input())

for case in range(1, T+1):
    sudoku = []
    for i in range(9):
        now = list(map(int,input().split()))
        sudoku.append(now)
    
    if width(sudoku) and height(sudoku) and square(sudoku):
        result = 1
    else :
        result = 0
    print(f'#{case} {result}')
  • 각 스도쿠 퍼즐에서 조건을 만족하는지 확인
    • 가로줄에서 조건을 만족하는지
    • 세로줄에서 조건을 만족하는지
    • 작은 격자(3X3)에서 조건을 만족하는지
  • 조건을 만족하는 경우 1, 아닌 경우 0을 출력



📌후기


특이한 케이스가 존재하지 않고, 주어진 조건대로 진행하면 해결할 수 있어 무난한 문제였다.

profile
Growing Developer
post-custom-banner

0개의 댓글