스도미노쿠
시간 제한2초메모리 제한128 MB
빈 칸 36개를 서로 다른 두 숫자로 이루어진 도미노 36개로 덮으면서 스도쿠 규칙까지 만족하는 9x9 격자의 유일한 해를 구한다.
문제
스도쿠가 세계적으로 유행한 뒤로 비슷한 퍼즐이 많이 등장했다. 그중 하나가 스도쿠와 도미노를 결합한 스도미노쿠이다.
이 퍼즐은 스도쿠 규칙을 따른다. 크기의 격자를 부터 까지의 숫자로 채우되, 다음 조건을 모두 만족해야 한다.
- 각 행에는 부터 까지의 숫자가 정확히 한 번씩 나타난다.
- 각 열에는 부터 까지의 숫자가 정확히 한 번씩 나타난다.
- 격자를 나눈 아홉 개의 정사각형 각각에도 부터 까지의 숫자가 정확히 한 번씩 나타난다.
스도미노쿠의 격자에는 이미 부터 까지의 숫자가 한 칸씩(모두 아홉 칸) 적혀 있고, 나머지 칸은 도미노 타일 개로 덮어야 한다. 각 도미노 타일에는 서로 다른 두 숫자가 적혀 있으며, 부터 까지의 숫자로 만들 수 있는 서로 다른 쌍이 모두 하나씩 존재한다(예: ). 와 은 같은 타일이므로 구분하지 않는다. 도미노는 가로 또는 세로로 놓을 수 있고, 정사각형의 경계를 걸쳐 놓아도 된다.
칸의 위치는 다음과 같이 나타낸다. 행은 위에서 아래로 부터 까지의 알파벳으로, 열은 왼쪽에서 오른쪽으로 부터 까지의 숫자로 표시하며, 한 칸의 위치는 (행 문자)(열 숫자)로 쓴다. 예를 들어 은 행 열을 뜻한다.
스도미노쿠 퍼즐의 초기 상태가 주어졌을 때, 퍼즐을 완성하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫째 줄에는 이미 놓여 있는 도미노의 개수 이 주어진다 ().
다음 개의 줄에는 도미노 하나의 정보가 U LU V LV 형식으로 주어진다. 는 도미노에 적힌 한 숫자이고 는 그 숫자가 놓인 칸의 위치(길이 의 문자열)이며, 는 도미노에 적힌 다른 숫자이고 는 그 위치이다. 한 도미노를 이루는 두 칸은 항상 가로 또는 세로로 인접해 있다.
그 다음 줄에는 이미 적혀 있는 아홉 개의 숫자의 위치가 부터 까지 차례대로 주어진다. 위치는 도미노와 같은 방식으로 나타낸다.
도미노와 숫자가 놓인 칸은 서로 겹치지 않는다.
입력의 마지막 줄에는 이 하나 주어지며, 이는 입력의 끝을 의미한다.
출력
각 퍼즐에 대해 먼저 Puzzle k를 출력한다. 여기서 는 입력에서의 순서(1부터 시작)이다. 이어서 완성된 격자를 한 줄에 아홉 자리씩, 모두 아홉 줄로 출력한다.
정답이 유일한 경우만 입력으로 주어진다.