Closed yeahdy closed 4 days ago
crossHatching()
: 타겟이 들어갈 수 없는 자리 체크check()
: 타겟이 적절한 위치에 들어갔을 때 해당 타겟을 기준으로 들어갈 수 없는 자리 체크isValid()
: 타겟이 들어가야하는데 들어갈 수 없거나, 타겟이 중복돼서 들어가는지 유효성 체크 → ERROR
를 출력putNumber()
: 타겟이 들어갈 수 있는 자리가 1개인지 확인하고 1개라면 타겟 집어넣고 check()
호출
무슨 의도의 문제였을까요.. 백트래킹? 엇.. 문제 리뷰 남기니깐 골드 3됐어요..
변수
boolean error
: 스도쿠에 모순이 일어나는지 확인하는 변수int[][] map
: 스도쿠를 표시할 이차원 배열boolean[][][] v
: 1부터 9까지 위치할 수 있는 곳을 표시하는 변수
v[0][r][c] = true
: 0은 map[r][c]
에 올 수 없음v[0][r][c] = false
: 0은 map[r][c]
에 올 수 있음true
가 마크 표시했다는 의미여서 true
이면 올 수 없고, false
(빈 공간)여야 올 수 있음HashSet<Integer>[] set
: 원래 스도쿠를 3 X 3크기인 9개의 스토쿠 나누었을 때, 0 ~ 8번째 스도쿠마다 어떤 수가 있는지 저장하는 변수
풀이
9 ⨉ 9
스도쿠를 9개의 3 ⨉ 3
스도쿠라고 생각
r
, c
라면, 해당 좌표가 포함되는 (3 ⨉ 3
)스도쿠의 idx
:(r / 3) * 3 + c / 3
k
) 고르기 (1 ~ 9 for문으로 반복)3 ⨉ 3
스도쿠를 0
번에서 8
번까지 탐색
k
가 해당 3 ⨉ 3
스도쿠 안에 있다면, continue
해서 다음 숫자 확인k
가 해당 3 ⨉ 3
스도쿠 안에 없다면, 어디에 들어갈 수 있는지 확인3 ⨉ 3
스도쿠를 확인하면서 k
가 있을 수 있는 자리의 개수(canExistPoint
) 찾기k
가 있을 수 있는 곳의 개수(canExistPoint
)가 한 개라면 map
에 표시해주기
v
배열에 표시해주기set[스도쿠idx]
에 k
add
해주기 제가 난이도 다시 올려놨습니다
1~9 까지 타겟 숫자 크로스해칭
가로줄 1차원 배열
, 세로줄 1차원 배열
, 3*3박스 배열
방문 체크gridCheck[i / 3][j / 3]
같은 3*3 박스에 포함되어 있다면 같은 인덱스(i,j)가 되므로 방문 유무 확인 가능스도쿠 배열 순회하기
타겟 숫자가 들어갈 수 있는 서브그리드 찾기
가로줄 1차원 배열
, 세로줄 1차원 배열
이 방문 처리되어 있지 않아야 함ERROR
서브그리드에서 자리를 찾은 후에 이곳의 가로줄,세로줄,3*3배열 방문 처리 하는걸 놓쳤어요.. 그리고 숫자를 다 찾을 때까지 무한 반복을 돌릴때 flag 를 true 로 만드는 시점에서 많이 헤맸네요 ㅜㅜ.. 🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️🤦♀️
구현
solve()
: 1~9까지 CrossHatching()
구현CrossHatching()
: 배치하려는 좌표와의 중복 검사
error
: 풀이 가능 여부 판단 변수check()
: 3x3 네모안에 해당 칸에 숫자를 배치할 수 있는지 확인
제약조건 유지하도록 구현하는게 어려웠습니다. 구현 문제 연습 많이 많이..👊🏻🥋👊🏻
=> 스도쿠 조건이 있기 때문에 완전탐색 가능
유효성 검사
fillArea(n)
: 숫자 n이 들어갈 곳이 있는지 유효성 검사
=> fillLine(n) : n의 십자가 방문처리
=> fillSquare(n) : n이 포함된 3*3박스 방문처리CrossHatching
입력에 제시된 숫자로만 스도쿠를 풀어서,,,, 계속 틀렸네요,,,, ㅎㅎㅎㅎ 휴우~ 스도쿠 개념 공부나 해야겠어요 ^^
아니,, 왜 지금 생각하니까 2차원으로 했을까요 굳이 3개다...? 원래 1차원이였는데 이것부터가 문제인가...
crossHatching()
이 부분도 의심가는 부분이긴한데 중복이 생기려나요,,,,? 하지만 자리가 있다면 바로 확정해서 다음 조건을 확인할때 겹치진 않을거같은데 가로세로박스 모두 확인한 다음에 넣어줘야하는걸까요...?
ㅠㅠ풀지 못했습니다ㅠㅠ 머리가 안돌아가요,, 풀진못했지만 말썽꾸러기가되면 안되니까,,,, 일단 이슈는 작성했습니다ㅜㅜ 좀 이따 리뷰를 열심히 들어보겠습니다,,ㅠ,ㅠ