[LeetCode] 36. Valid Sudoku

원숭2·2022년 2월 15일
0

LeetCode

목록 보기
50/51

문제

풀이

문제의 조건은 총 3가지이다.
1) 가로로 봤을 때 숫자가 중복되면 안됨.
2) 세로로 봤을 때 숫자가 중복되면 안됨.
3) 칸을 3 X 3으로 나눈 것에서 숫자가 중복되면 안됨.

  1. 위 문제의 조건에 맞게 각각의 경우에 대해 구현함.

코드

class Solution:
    def isValidSudoku(self, board: List[List[str]]) -> bool:
        table = []
        # Rule 1
        for i in range(9) :
            tmp = []
            for b in board :
                if b[i] != '.' :
                    if b[i] in tmp :
                        return False
                    else :
                        tmp.append(b[i])
        
        # Rule 2
        for b in board :
            tmp = []
            for i in range(len(b)) :
                if b[i] != '.' :
                    if b[i] in tmp :
                        return False
                    else :
                        tmp.append(b[i])
        
        # Rule 3
        for r in range(0, 9, 3) : # Row
            for c in range(0, 9, 3) : # Column
                tmp = []
                for i in range(3) :
                    for j in range(3) :
                        t = board[r+i][c+j]
                        if t != '.' :
                            if t in tmp :
                                return False
                            else :
                                tmp.append(t)
        
        return True

0개의 댓글