본문 바로가기

Programing/Algorithm

[LeetCode] 36. Valid Sudoku

728x90

 

 

 

https://leetcode.com/problems/valid-sudoku/description/

 

public class Solution
{
    public bool IsValidSudoku(char[][] board)
    {
        var zoneSetArr = new HashSet<char>[3, 3];
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                zoneSetArr[i, j] = new HashSet<char>();
            }
        }

        for (int i = 0; i < 9; i++)
        {
            var colSet = new HashSet<char>();
            var rowSet = new HashSet<char>();

            for (int j = 0; j < 9; j++)
            {
                if (board[i][j] != '.')
                {
                    if (colSet.Contains(board[i][j]))
                        return false;

                    colSet.Add(board[i][j]);

                    if (zoneSetArr[i / 3, j / 3].Contains(board[i][j]))
                        return false;

                    zoneSetArr[i / 3, j / 3].Add(board[i][j]);
                }

                if (board[j][i] != '.')
                {
                    if (rowSet.Contains(board[j][i]))
                        return false;

                    rowSet.Add(board[j][i]);
                }
            }
        }

        return true;
    }
}

 

 

 

728x90