HelloCho

[Python] #36. Valid Sudoku(Medium) 본문

코테/LeetCode

[Python] #36. Valid Sudoku(Medium)

choo2969 2020. 9. 17. 02:41

문제 :

이 문제는 우리가 스도쿠 문제가 주어질때 가로, 세로, 하나의 grid안에 같은 수가 있는지 확인하고 있다면 False를 return하는 문제이다. 

class Solution:
    def isValidSudoku(self, board: List[List[str]]) -> bool:
        for i in range(len(board)):
            row_check = []
            col_check = []
            for j in range(len(board)):
                row = board[i][j] 
                col = board[j][i] 
                if row != '.' and row in row_check:
                    return False
                else:
                    row_check.append(row)
                if col != '.' and col in col_check:
                    return False
                else:
                    col_check.append(col)
        for i in range(0,len(board),3):
            check = []
            for j in range(0,len(board),3):
                check = []

                for w in range(3):
                    for x in range(3):
                        data = board[i+w][j+x]
                        if data != '.' and data in check :
                            print(data, check)
                            return False
                        else:
                            check.append(data)
                        
        return True

이 문제는 단순하게 접근했다. 

첫번째 for 문을 이용해서  가로열과 세로열에 같은 수가 있는지 확인했다.

다음 for문에서는 grid를 찾았다. i,j는 새로운 grid로 3칸씩 넘어갔고, w와x를 통해서 하나의 값씩 순회하며 찾았다. 

결과는

92ms 와 14MB로 통과! 

 
Comments