• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

해시맵을 사용해서 풀어보았습니다 혹시 예외나 틀린 부분이 있을까요

23.03.21 12:25 작성 23.03.21 12:31 수정 조회수 306

0

# 스도쿠 제대로 풀었는지 검사하는 알고리즘
import sys
sys.stdin = open("./탐색&시뮬레이션/스도쿠.txt", 'r')
n = 9


def solution(sudoku):  

    for i in range(len(sudoku)):
        rawTable = {}
        colTable = {}
        for j in range(n):
            if sudoku[i][j] in rawTable or sudoku[j][i] in colTable:
                
                return False
            else:
                rawTable[sudoku[i][j]] = sudoku[i][j]
                colTable[sudoku[j][i]] = sudoku[j][i]
    # 이제 3*3 검사도 하자
    

    for i in range(3):    
        for j in range(3):
            matrixTable = {}    
            for k in range(3):
                for s in range(3):
                    if sudoku[i*3+k][i*3+s] in matrixTable:
                        return False
                    else:
                        matrixTable[sudoku[i*3+k][i*3+s]] = sudoku[i*3+k][i*3+s]
                    
    return True    
    
sudoku = [list(map(int, input().split())) for _ in range(n)]
if solution(sudoku):
    print('Yes')
else:
    print('No')

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!