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;
}
결과.