풀이
/**
* 36_ValidSudoku.js
* Medium
* https://leetcode.com/problems/valid-sudoku/
*/
var isValidSudoku = function(board) {
const row = new Array(9).fill(null).map(() => new Set([])),
col = new Array(9).fill(null).map(() => new Set([])),
box = new Array(9).fill(null).map(() => new Set([]));
for (let i = 0; i < 9; i++) {
for (let j = 0; j < 9; j++) {
if (board[i][j] !== ".") {
if (row[i].has(board[i][j])) return false;
if (col[j].has(board[i][j])) return false;
if (box[getBoxNum(i, j)].has(board[i][j])) return false;
row[i].add(board[i][j]);
col[j].add(board[i][j]);
box[getBoxNum(i, j)].add(board[i][j]);
}
}
}
return true;
};
function getBoxNum(i, j) {
return 3 * Math.floor(i/3) + Math.floor(j/3);
}
2중 for문을 한 번만 돌리는데 신경써서 처리했다. row, col, box 를 각각 돌리는게 아니라 한 번 돌릴 때 한 번에 확인해서 처리했다.
'알고리즘 > LeetCode' 카테고리의 다른 글
[Leetcode][자바스크립트][Easy] 141. Linked List Cycle (0) | 2022.01.11 |
---|---|
[Leetcode][자바스크립트][Easy] 242. Valid Anagram (0) | 2022.01.10 |
[Leetcode][자바스크립트][Easy] 383. Ransom Note (0) | 2022.01.10 |
[Leetcode][자바스크립트][Easy] 387. First Unique Character in a String (0) | 2022.01.10 |
[Leetcode][자바스크립트][Easy] 566. Reshape the Matrix (0) | 2022.01.09 |
댓글