36. Valid Sudoku

늘보·2021년 8월 9일
0

LeetCode

목록 보기
20/69

💡풀이

var isValidSudoku = function (board) {
  // Set으로 중복을 없애준다.
  let set = new Set();

  for (let i = 0; i < board.length; i++) {
    for (let j = 0; j < board[0].length; j++) {
      let item = board[i][j];
      // .가 아닌 경우만 체크
      if (item !== '.') {
        // String과 index를 통해 unique한 값을 만들어줌
        let num = item;
        let x = item + 'in row' + j; // x축을 탐색하는 변수 x
        let y = item + 'in column' + i; // y축을 탐색하는 변수 y

        // 9개의 박스 중 몇 번째 박스에 있는지(0부터 시작하는 박스) 탐색하는 변수 z
        let z = num + 'in box' + (Math.floor(i / 3) * 3 + Math.floor(j / 3));

        // 중복을 허용하지 않는 set의 특성을 활용한 조건
        if (set.has(x) || set.has(y) || set.has(z)) return false;

        // nested loop을 돌면서 set에 계속 넣어준다.
        set.add(x);
        set.add(y);
        set.add(z);
      }
    }
  }
  return true;
};

📝정리

이 풀이는 제 풀이가 아닌 다른 스터디원 분의 풀이를 보고 제가 이해한 부분을 옮긴 코드입니다. 기본적으로 Set을 사용해 중복 제거를 하셨고, 중간에 한번이라도 중복이 있다면 falsereturn 시키는 형태입니다.

저희 스터디원 분들의 풀이, 설명 항상 감사합니다!

수정, 지적을 환영합니다!

문제 링크

https://leetcode.com/problems/valid-sudoku/

LeetCode GitHub

https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/submissions/

0개의 댓글