[BOJ/백준] 2239. 스도쿠 (Java)

노다현·2021년 6월 11일
0

알고리즘

목록 보기
22/22
post-thumbnail

https://www.acmicpc.net/problem/2239

Problem

우리가 흔히 하는 스도쿠 게임을 알고리즘을 이용해 풀어내는 문제

Solution

한 칸을 기준으로 가로, 세로, 3x3 범위에서 사용된 숫자를 제외한 나머지 숫자들을 넣어보며 백트래킹을 이용해 해결


<코드 설명>
1. 입력 받기
2. 입력 받으면서 0인 칸은 list에 따로 저장해주기
3. level이 go 함수가 재귀호출 될 때마다 1씩 증가하는데 list의 사이즈와 같아질 때까지 계속해서 go 함수 재귀호출. 같아지면 print 함수를 호출한다. 1부터 차례로 빈칸에 넣는 것이기 때문에 '사전식으로 앞서는 것을 출력'하라는 조건에도 맞게된다. 출력 후 프로그램 종료.
4. 0인칸 하나씩 받아오기
5. 1~9까지의 숫자 중 이미 쓰인 숫자 체크할 배열 생성
6. 가로, 세로, 3x3 범위 탐색하며 1~9까지 쓰인 숫자 true 처리해주기
7. 1~9까지 쓰이지 않은 숫자를 빈칸에 넣은 뒤 level 1 증가시켜 go 함수 재귀호출. 만약 1~9 중 쓸 숫자가 없으면 return 되어 그 전단계 칸으로 돌아와 다음 쓰이지 않은 숫자를 빈칸에 넣는 식으로 진행된다.
8. 3에서 모든 빈칸이 채워져 print 함수가 호출되면 전체 판을 출력한다.

Java Code

profile
DAilyHYUN.log

0개의 댓글

관련 채용 정보