-
[알고리즘] 스도쿠 1 - 스도쿠 문제 검증 (Hash Table, HashSet)개발 공부/Algorithm 2020. 12. 7. 08:15
leetcode.com/problems/valid-sudoku/
Valid Sudoku - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
스도쿠 문제가 유효한지 아닌지 검사하는 코드에 대한 문제
스도쿠 문제의 힌트 값들이 들어있는 2차원 배열이 주어지고 행,열,3x3 박스안에서 중복되는 값이 있는지 체크하는 문제이다.
Approach 1
행,렬,3x3 박스 각각 3번의 다른 범위에 대한 중복 체크가 필요하다.
중복을 허용하지 않고 검색이 쉬운 HashSet 을 사용하였다.
HashSet 의 add() 는 값이 이미 있는지 없는지 중복체크 후에 없으면 그 값을 추가하는 method 이다.
HashTable을 사용하여 중복을 체크하기 때문에 O(1) 의 시간복잡도를 갖는다.
저장 성공 여부(중복체크)에 따라 boolean 을 리턴한다.
각각 다른 행,렬,박스의 HashSet array를 만들어서 0번째 row 에 있는 값은 HashSet rows[0] 에 추가한다.
같은 방식으로 행/렬/박스/index 별로 값을 저장하면서 동시에 중복 체크를 하여 유효성 검사를 한다.
이미 값이 존재하면 유효하지않은 스도쿠이기 때문에 false 를 리턴한다.
Approach 2
직접 loop 로 가로,세로,박스를 체크 해주는 건데 (Discuss 컨닝함)
의외로 런타임도 빠르다
반응형'개발 공부 > Algorithm' 카테고리의 다른 글
[알고리즘] Hash Table 구현하기 (0) 2020.12.16 [알고리즘] 스도쿠 2 - 스도쿠 풀이 (백트래킹, DFS) (0) 2020.12.11 [알고리즘] 가장 큰 부분배열의 합 (카데인 알고리즘, 다이나믹 프로그래밍) (0) 2020.12.06 구글 Top 10 알고리즘 - 리트코드 문제 링크 (0) 2020.12.06 구글 개발자가 뽑은 인터뷰 TOP 10 알고리즘 문제 (1) 2020.11.18