본문 바로가기
코테 준비/Hash Table

[LeetCode] 36. Valid Sudoku

by 헤이즐넛 좋아하는 개발자 2025. 1. 25.

I. Description


II. Code

class Solution:
    def isValidSudoku(self, board: List[List[str]]) -> bool:
        # 가로 중복 체크
        for row in board:
            for i in row:
                if i != '.' and row.count(i) > 1:
                    return False

        # 세로 중복 체크
        for i in range(9):
            col = [row[i] for row in board]
            for j in col:
                if j != '.' and col.count(j) > 1:
                    return False
                
        # 3x3 중복 체크
        for i in range(0, 9, 3):
            for j in range(0, 9, 3):
                square = [board[x][y] for x in range(i, i+3) for y in range(j, j+3)]
                for k in square:
                    if k != '.' and square.count(k) > 1:
                        return False
        return True

가로 중복, 세로 중복, 3x3 중복 3가지 경우에 대해 체크해주면 된다. 3x3 중복에서 x, y를 위에 쓰지 않고 안에서 바로 정의하는 게 코드를 간단하게 만들어준다는 것도 기억해놓으면 좋겠다.