그림 퍼즐

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

요약
아홉 개의 정사각형 조각을 3x3 격자에 배치하고 회전해, 맞닿은 변끼리 같은 그림의 왼쪽 반쪽과 오른쪽 반쪽이 되도록 하는 배치의 수를 센다.
난이도

보통10점 중 7점

유형
백트래킹, 완전 탐색, 구현, 재귀
정답자
아직 제출이 없습니다

문제

이 그림 퍼즐은 정사각형 조각 9개로 이루어진다. 각 조각의 네 변에는 그림의 절반이 하나씩 그려져 있다.

그림은 B, C, K, P 네 종류가 있다. 각 그림은 한가운데에서 왼쪽 절반과 오른쪽 절반으로 잘리므로, 한 변에 적히는 표시는 BL, BR, CL, CR, KL, KR, PL, PR 여덟 가지 중 하나이다. 여기서 XL은 그림 X의 왼쪽 절반, XR은 오른쪽 절반을 뜻한다. 같은 그림의 왼쪽 절반과 오른쪽 절반은 서로 맞물린다.

  • BL은 BR와 맞는다
  • CL은 CR와 맞는다
  • KL은 KR와 맞는다
  • PL은 PR와 맞는다

목표는 아홉 조각을 3×3 격자에 놓아, 서로 맞닿은 모든 조각 쌍에서 맞닿는 두 변이 맞물리게 하는 것이다. 즉 맞닿는 두 변은 한 그림의 두 절반(같은 문자에 한쪽은 L, 다른 한쪽은 R)이어야 한다. 조각은 놓기 전에 0°, 90°, 180°, 270°만큼 회전할 수 있다. 조각을 회전하면 네 변의 표시가 조각을 따라 순환하며 이동할 뿐, L 절반이 R 절반으로 바뀌거나 문자가 바뀌지는 않는다.

예시 퍼즐

예시 퍼즐.

올바른 배치의 예

조각을 맞춘 올바른 배치의 한 예.

입력

입력은 여러 개의 퍼즐로 이루어진다. 각 퍼즐은 퍼즐 번호가 한 줄에 하나씩 주어지며 시작한다. 퍼즐 번호가 0이면 입력의 끝을 뜻하며, 이는 퍼즐이 아니다.

퍼즐 번호 줄 다음에는 조각을 설명하는 아홉 줄이 온다. 각 줄에는 조각 번호(1부터 9까지)에 이어, 그 조각의 위, 오른쪽, 아래, 왼쪽 변에 적힌 표시가 이 순서대로 공백으로 구분되어 주어진다. 각 표시는 BL, BR, CL, CR, KL, KR, PL, PR 중 하나이다.

출력

각 퍼즐마다 한 줄을 출력한다. 퍼즐 번호, 콜론, 공백, 그리고 올바른 배치의 개수를 차례로 적는다.

올바른 배치란 아홉 조각을 각각 정확히 한 번씩, 네 회전 중 하나를 골라 3×3 격자에 놓되 맞닿는 모든 변이 맞물리도록 한 것이다. 이러한 배치를 모두 센다. 어떤 배치가 다른 배치를 격자 전체째로 회전한 것이더라도 서로 다른 배치로 따로 센다. 퍼즐을 풀 수 없으면 개수는 0이다.

예제3

  1. 예제 1

    입력
    1
    1 BR KR PL CR
    2 CL PR BL KR
    3 KR PR CR BL
    4 PL KR BL CL
    5 PL BR CL KR
    6 PR CL BR PL
    7 CR KL BL PR
    8 BL CR KL PL
    9 KL CL PR BL
    2
    1 PR PR BL CR
    2 BR KL CR PR
    3 CR BL PL KR
    4 KL PL BL CL
    5 BR CR PL KR
    6 KL BR PL CR
    7 CL PL BL KR
    8 KR KL CR BL
    9 CR KL PR BL
    3
    1 PL KL CL BR
    2 PL CR KL BL
    3 PR BR CL KR
    4 CR PL BR KR
    5 PR CL BR KR
    6 BL KL CR PR
    7 PL BL CL KR
    8 PR CR KL BR
    9 KL BL CL PL
    0
    
    예상 출력
    1: 8
    2: 0
    3: 32
    
  2. 예제 2

    입력
    1
    1 BR KR PL CR
    2 CL PR BL KR
    3 KR PR CR BL
    4 PL KR BL CL
    5 PL BR CL KR
    6 PR CL BR PL
    7 CR KL BL PR
    8 BL CR KL PL
    9 KL CL PR BL
    0
    
    예상 출력
    1: 8
    
  3. 예제 3

    입력
    3
    1 PL KL CL BR
    2 PL CR KL BL
    3 PR BR CL KR
    4 CR PL BR KR
    5 PR CL BR KR
    6 BL KL CR PR
    7 PL BL CL KR
    8 PR CR KL BR
    9 KL BL CL PL
    0
    
    예상 출력
    3: 32