Menu
CoddyTech

Sudoku Solver

어려움백트래킹python iconjava iconcpp iconc iconjs icon+10

스도쿠 보드는 아홉 개의 3 × 3 상자로 나뉜 9 × 9 격자입니다. 풀린 보드에서는 각 행, 각 열, 각 상자에 1부터 9까지의 숫자가 각각 정확히 한 번씩 들어 있습니다.

퍼즐은 문자열 9개로 주어지며, 위쪽 행부터 행마다 하나씩 배치됩니다. .은 빈 칸입니다. 모든 빈 칸을 채우고 같은 형식으로 풀이된 보드를 반환하세요. 보드의 해답은 정확히 하나입니다.

함수

solveSudoku(board: string-array) → string-array
boardstring-array
퍼즐의 9개 행, 빈 셀마다 점 하나
반환값string-array
해결된 보드의 9개 행

제약 조건

  • board에는 길이가 9인 문자열 9개가 들어 있습니다.
  • 모든 문자는 .이거나 1부터 9까지의 숫자 중 하나입니다.
  • 주어진 숫자는 한 행, 한 열 또는 한 박스 안에서 반복되지 않습니다.
  • 보드에는 해답이 정확히 하나 있습니다.

예제

입력
board = ["9.7.....6", "824.3....", "..1..9..2", ".9...2.18", "...4....5", "1325.8...", "...687...", "......8.9", ".4.9...5."]
출력
["957214386", "824736591", "361859742", "495372618", "786491235", "132568974", "519687423", "273145869", "648923157"]
설명
맨 윗줄 9.7.....6에는 이미 9, 7, 6이 있으므로 빈칸 여섯 개에는 1, 2, 3, 4, 5, 8이 들어갑니다. 각 숫자가 어디에 들어갈지는 열과 박스에 따라 결정되며, 행은 957214386이 됩니다.
challenge icon

후속 질문

킬러 스도쿠에서는 셀의 케이지에 있는 숫자의 합도 지정된 값이 되어야 합니다. 이 규칙을 탐색에 어떻게 추가하고, 이를 이용해 가지치기를 조기에 수행할 수 있을까요?

코드 초기화
def solveSudoku(board):
    # 여기에 코드를 작성하세요

테스트 #1

인자

board = ["9.7.....6", "824.3....", "..1..9..2", ".9...2.18", "...4....5", "1325.8...", "...687...", "......8.9", ".4.9...5."]

예상 출력

["957214386", "824736591", "361859742", "495372618", "786491235", "132568974", "519687423", "273145869", "648923157"]