알고리즘/LeetCode
[Leetcode][자바스크립트][Medium] 36. Valid Sudoku
Benjamin_Choi
2022. 1. 10. 21:15
풀이
/**
* 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 를 각각 돌리는게 아니라 한 번 돌릴 때 한 번에 확인해서 처리했다.