Leetcode/NeetCode

[ArraysHashing][Medium] 36. Valid Sudoku

자전거통학 2024. 7. 8. 22:15

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

 

 

아래와 같은 sudoku 룰 이 있을 때, 이 rule에 대해 주어진 입력이 유효한지 판단하라. 

 

 

2차원 array에 대한 coding ability test. 

 

별다른 함정은 없는 문제. 

 

코드 

더보기
bool isValidSudoku(vector<vector<char>>& board) 
{
    const int W = 9;
    const int H = 9;

    set<char> sBuff;

    // check row. 
    for (auto x = 0; x < W; ++x)
    {
        sBuff.clear();
        for (auto y = 0; y < H; ++y)
        {
            char cur = board[y][x];
            if (cur == '.')  continue;

            if (sBuff.find(cur) != sBuff.end())
                return false;
            sBuff.insert(cur);
        }
    }

    // check col.
    for (auto y = 0; y < H; ++y)
    {
        sBuff.clear();
        for (auto x = 0; x < W; ++x)
        {
            char cur = board[y][x];
            if (cur == '.')  continue;

            if (sBuff.find(cur) != sBuff.end())
                return false;
            sBuff.insert(cur);
        }
    }

    // check 3x3
    for (auto y = 0; y < H; y+=3)
    {
        for (auto x = 0; x < W; x+=3)
        {
            sBuff.clear();

            for (auto i = 0; i < 9; ++i)
            {
                int iy = y + i/3;
                int ix = x + (i % 3);

                char cur = board[iy][ix];
                if (cur == '.')  continue;

                if (sBuff.find(cur) != sBuff.end())
                    return false;
                sBuff.insert(cur);
            }
        }
    }
    return true;
}

 

 

결과.