스도미노쿠

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

요약
빈 칸 36개를 서로 다른 두 숫자로 이루어진 도미노 36개로 덮으면서 스도쿠 규칙까지 만족하는 9x9 격자의 유일한 해를 구한다.
난이도

어려움10점 중 8점

유형
백트래킹, DFS, 구현, 해시맵
정답자
아직 제출이 없습니다

문제

스도쿠가 세계적으로 유행한 뒤로 비슷한 퍼즐이 많이 등장했다. 그중 하나가 스도쿠와 도미노를 결합한 스도미노쿠이다.

이 퍼즐은 스도쿠 규칙을 따른다. 9×99 \times 9 크기의 격자를 11부터 99까지의 숫자로 채우되, 다음 조건을 모두 만족해야 한다.

  • 각 행에는 11부터 99까지의 숫자가 정확히 한 번씩 나타난다.
  • 각 열에는 11부터 99까지의 숫자가 정확히 한 번씩 나타난다.
  • 격자를 나눈 아홉 개의 3×33 \times 3 정사각형 각각에도 11부터 99까지의 숫자가 정확히 한 번씩 나타난다.

스도미노쿠의 격자에는 이미 11부터 99까지의 숫자가 한 칸씩(모두 아홉 칸) 적혀 있고, 나머지 7272칸은 도미노 타일 3636개로 덮어야 한다. 각 도미노 타일에는 서로 다른 두 숫자가 적혀 있으며, 11부터 99까지의 숫자로 만들 수 있는 서로 다른 쌍이 모두 하나씩 존재한다(예: 1+2,1+3,…,1+9,2+3,…1+2, 1+3, \dots, 1+9, 2+3, \dots). 1+21+2와 2+12+1은 같은 타일이므로 구분하지 않는다. 도미노는 가로 또는 세로로 놓을 수 있고, 3×33 \times 3 정사각형의 경계를 걸쳐 놓아도 된다.

칸의 위치는 다음과 같이 나타낸다. 행은 위에서 아래로 AA부터 II까지의 알파벳으로, 열은 왼쪽에서 오른쪽으로 11부터 99까지의 숫자로 표시하며, 한 칸의 위치는 (행 문자)(열 숫자)로 쓴다. 예를 들어 B3B3은 BB행 33열을 뜻한다.

스도미노쿠 퍼즐의 초기 상태가 주어졌을 때, 퍼즐을 완성하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫째 줄에는 이미 놓여 있는 도미노의 개수 NN이 주어진다 (10≤N≤3510 \le N \le 35).

다음 NN개의 줄에는 도미노 하나의 정보가 U LU V LV 형식으로 주어진다. UU는 도미노에 적힌 한 숫자이고 LULU는 그 숫자가 놓인 칸의 위치(길이 22의 문자열)이며, VV는 도미노에 적힌 다른 숫자이고 LVLV는 그 위치이다. 한 도미노를 이루는 두 칸은 항상 가로 또는 세로로 인접해 있다.

그 다음 줄에는 이미 적혀 있는 아홉 개의 숫자의 위치가 11부터 99까지 차례대로 주어진다. 위치는 도미노와 같은 방식으로 나타낸다.

도미노와 숫자가 놓인 칸은 서로 겹치지 않는다.

입력의 마지막 줄에는 00이 하나 주어지며, 이는 입력의 끝을 의미한다.

출력

각 퍼즐에 대해 먼저 Puzzle k를 출력한다. 여기서 kk는 입력에서의 순서(1부터 시작)이다. 이어서 완성된 9×99 \times 9 격자를 한 줄에 아홉 자리씩, 모두 아홉 줄로 출력한다.

정답이 유일한 경우만 입력으로 주어진다.

예제1

  1. 예제 1

    입력
    10
    6 B2 1 B3
    2 C4 9 C3
    6 D3 8 E3
    7 E1 4 F1
    8 B7 4 B8
    3 F5 2 F6
    7 F7 6 F8
    5 G4 9 G5
    7 I8 8 I9
    7 C9 2 B9
    C5 A3 D9 I4 A9 E5 A2 C6 I1
    11
    5 I9 2 H9
    6 A5 7 A6
    4 B8 6 C8
    3 B5 8 B4
    3 C3 2 D3
    9 D2 8 E2
    3 G2 5 H2
    1 A2 8 A1
    1 H8 3 I8
    8 I3 7 I4
    4 I6 9 I7
    I5 E6 D1 F2 B3 G9 H7 C9 E5
    0
    
    예상 출력
    Puzzle 1
    872643195
    361975842
    549218637
    126754983
    738169254
    495832761
    284597316
    657381429
    913426578
    Puzzle 2
    814267593
    965831247
    273945168
    392176854
    586492371
    741358629
    137529486
    459683712
    628714935