[Leetcode] 36. Valid Sudoku β
Problem β
μ€λμΏ λ¬Έμ μ μ€λ₯κ° μλμ§ νμΈνλ λ¬Έμ
(νμ§μμ μνμμ λ¬Έμ μ μ€λ₯κ° μλμ§λ§ νμΈνλ©΄λλ€.)
Solution β
- κ°λ‘νμλν μ€λ³΅λλ μ«μμλμ§ νμΈ
- μΈλ‘νμλν μ€λ³΅λλ μ«μκ° μλμ§ νμΈ
- κ°κ°μ μ¬κ°νμμ μ€λ³΅λλ μ«μκ° μλμ§ νμΈ
JS Code β
javascript
/**
* @param {character[][]} board
* @return {boolean}
*/
var isValidSudoku = function (board) {
const getArr = () => Array.from(Array(10), (_, i) => (i ? 0 : 1))
const isValidate = (arr) => arr.every((item) => item < 2)
const doCol = () => {
for (let i = 0; i < 9; i++) {
let arr = getArr()
for (let j = 0; j < 9; j++) {
const temp = board[i][j]
if (temp != '.') arr[temp]++
}
if (!isValidate(arr)) return false
}
return true
}
const doRow = () => {
for (let i = 0; i < 9; i++) {
let arr = getArr()
for (let j = 0; j < 9; j++) {
const temp = board[j][i]
if (temp != '.') arr[temp]++
}
if (!isValidate(arr)) return false
}
return true
}
const doRectangle = () => {
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let arr = getArr()
// κ°κ°μ μ¬κ°ν μΈλ±μ€λ₯Ό μ΄κΈ°κ°μΌλ‘ μ‘μ
for (let k = i * 3; k < i * 3 + 3; k++) {
for (let l = j * 3; l < j * 3 + 3; l++) {
const temp = board[k][l]
if (temp != '.') arr[temp]++
}
}
if (!isValidate(arr)) return false
} // rectangle
}
return true
}
return doCol() && doRow() && doRectangle()
}