빈틈없는 스도쿠

시간 제한2초메모리 제한512 MB

요약
3 곱하기 2 영역을 포함한 6 곱하기 6 격자를 1에서 9까지의 숫자로 채우되, 행과 열, 영역에서 중복이 없어야 하며 슬래시로 나뉜 칸에는 두 숫자가 들어간다.
난이도

보통10점 중 7점

유형
백트래킹, 구현, 행렬
정답자
아직 제출이 없습니다

문제

컴퓨터공학을 공부하는 학생이라면 대부분 한 번쯤은 일반 스도쿠를 푸는 프로그램을 작성해 보았을 것이다. 이 문제는 일반 스도쿠에 약간의 변형을 더해 조금 더 어렵게 만든 퍼즐이다.

6×66 \times 6 격자에 1부터 9까지의 숫자를 채워 넣는다. 어떤 행, 어떤 열, 굵은 선으로 둘러싸인 어떤 3×23 \times 2 영역에도 같은 숫자가 두 번 이상 들어가면 안 된다. 3×23 \times 2 영역은 가로 3칸, 세로 2칸 크기이고, 격자를 위에서부터 2행씩, 왼쪽에서부터 3열씩 나누면 영역 6개가 생긴다. 격자의 일부 칸은 사선(/)으로 나뉘어 있으며 이런 칸에는 숫자 2개를 넣어야 한다. 사선 위쪽에는 항상 더 작은 숫자가 들어간다.

완성되지 않은 퍼즐 격자가 주어질 때 퍼즐의 답 격자를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 뒤따르는 데이터 세트의 개수 PP (1≤P≤1001 \le P \le 100)가 주어진다.

각 데이터 세트는 모두 같은 방식으로, 서로 독립적으로 처리해야 한다. 데이터 세트 하나는 7줄로 이루어진다. 첫째 줄에는 데이터 세트 번호 KK가 주어진다. 나머지 6줄은 완성되지 않은 빈틈없는 스도쿠 격자이며, 각 줄에는 데이터 원소 6개가 공백으로 구분되어 주어진다. 데이터 원소는 숫자(1부터 9), 빈칸을 나타내는 -, 또는 이 둘 중 두 개를 사선(/)으로 이은 것이다. 사선이 있는 원소는 나뉜 칸을 나타내며, 사선 앞은 위쪽 칸, 사선 뒤는 아래쪽 칸이다.

모든 격자는 답이 정확히 하나이다.

출력

각 데이터 세트마다 7줄을 출력한다. 첫째 줄에는 데이터 세트 번호 KK를 출력한다. 이어지는 6줄에는 그 데이터 세트의 답 격자를 출력한다. 각 줄에는 데이터 원소 6개를 공백으로 구분해 출력한다. 데이터 원소는 숫자(1부터 9) 하나이거나, 사선(/)으로 구분한 숫자 2개이다. 나뉜 칸은 작은 숫자를 사선 앞에 쓴다.

예제1

  1. 예제 1

    입력
    1
    1
    -/- -/5 4 3 2 -/-
    - 6 -/- -/- - -/-
    - 7/- - -/- -/- 2
    8 -/- -/- - -/3 -
    -/- - -/- -/- 4 -
    -/- 8 7 6 5/- -/-
    
    예상 출력
    1
    7/9 1/5 4 3 2 6/8
    3 6 2/8 1/9 7 4/5
    1 7/9 3 4/5 6/8 2
    8 2/4 5/6 7 1/3 9
    5/6 3 1/9 2/8 4 7
    2/4 8 7 6 5/9 1/3