[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개의 댓글