[LeetCode] 36. Valid Sudoku

Chobby·2024년 8월 28일
1

LeetCode

목록 보기
73/194

스도쿠는 대각선 검사를 하지 않는다는 것을 알게되었음..

서브 박스를 검사하는 로직이 굉장히 중요하다.

😎풀이

function isValidSudoku(board: string[][]): boolean {
    // 행, 열, 3x3 서브 박스를 검사하기 위한 Set 배열
    const rows = Array.from({ length: 9 }, () => new Set());
    const cols = Array.from({ length: 9 }, () => new Set());
    const boxes = Array.from({ length: 9 }, () => new Set());

    for (let i = 0; i < 9; i++) {
        for (let j = 0; j < 9; j++) {
            const num = board[i][j];
            if (num === '.') continue; // 빈 칸 무시

            // 3x3 서브 박스의 인덱스 계산
            const boxIndex = Math.floor(i / 3) * 3 + Math.floor(j / 3);

            // 행, 열, 3x3 서브 박스에 중복된 숫자가 있는지 확인
            if (rows[i].has(num) || cols[j].has(num) || boxes[boxIndex].has(num)) {
                return false;
            }

            // 값 추가
            rows[i].add(num);
            cols[j].add(num);
            boxes[boxIndex].add(num);
        }
    }

    return true;
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글