아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Top This

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

요약
빨간 조각 세 개와 파란 조각 세 개가 주어질 때, 두 집합 모두 6x6 격자 안에서 만들 수 있는 모양 중 행 우선 순서로 가장 앞서는 것을 출력한다.
난이도

어려움10점 중 8점

유형
백트래킹, 완전 탐색, 시뮬레이션, 행렬
정답자
아직 제출이 없습니다

문제

Top This 게임은 네 개의 단위 정사각형을 변끼리 붙여 만든 조각으로 진행하며, 각 정사각형은 적어도 다른 한 정사각형과 한 변 전체를 맞대고 있습니다. 이런 조각은 정확히 일곱 개이며 A부터 G까지 이름이 붙어 있습니다(#는 채워진 단위 정사각형입니다):

A      B      C      D      E      F      G
####   #.     ###    .#     ##.    ##     .##
       #.     .#.    .#     .##    ##     ##.
       ##            ##

빨간 조각 세 개와 파란 조각 세 개가 주어집니다. 먼저 빨간 조각 세 개를 서로 겹치지 않게(변끼리는 닿아도 됩니다) 격자 위에 배치합니다. 그런 다음 파란 조각 세 개를 배치하여, 두 색이 덮는 칸의 집합이 정확히 같아지도록 만듭니다.

각 조각은 원하는 방향으로 회전할 수 있지만, 뒤집을 수는 없습니다. 뒤집으면 조각 B가 조각 D로(그 반대도) 바뀌고, 마찬가지로 E와 G가 서로 바뀝니다.

빨간 조각과 파란 조각 양쪽 모두로 만들 수 있는 모양을 하나 찾아 출력해야 합니다. 단, 6×66 \times 6 격자 안에 들어가는 모양만 고려합니다. 가능한 모양이 여러 개일 수 있으며, 그중 아래 순서에서 가장 먼저 오는 모양을 출력해야 합니다.

두 모양을 비교할 때는 칸을 행 우선 순서(각 행에서 왼쪽에서 오른쪽으로, 맨 윗행부터)로 살펴보며 두 모양이 처음으로 달라지는 칸을 찾습니다. 그 칸이 채워진 모양이 비어 있는 모양보다 앞섭니다.

입력

첫 줄에는 데이터 집합의 개수를 나타내는 정수 TT (1≤T≤51 \le T \le 5)가 주어집니다. 이어지는 TT개의 줄은 각각 하나의 데이터 집합을 나타냅니다. 각 줄은 세 글자로 된 문자열, 공백 한 칸, 그리고 다시 세 글자로 된 문자열로 이루어집니다. 각 글자는 일곱 조각 중 하나를 가리키는 A부터 G까지의 대문자입니다. 앞의 세 글자는 빨간 조각이고, 뒤의 세 글자는 파란 조각입니다.

출력

각 데이터 집합마다 먼저 그 데이터 집합의 번호를 한 줄에 출력합니다(첫 번째는 11, 두 번째는 22, 이런 식입니다). 그다음 해답을 한 줄에 여섯 글자씩 여섯 줄로 출력합니다. #는 채워진 칸을, .는 빈 칸을 나타냅니다. 채워진 칸들은 빨간 조각과 파란 조각 양쪽으로 모두 만들 수 있는, 위에서 정의한 순서상 가장 먼저 오는 모양을 나타내야 합니다. 그런 모양이 없으면 대신 No solution을 한 줄에 출력합니다.

예제2

  1. 예제 1

    입력
    4
    BCC BDE
    BCC EFG
    AAA CCE
    ADG DEE
    
    예상 출력
    1
    #####.
    .##.#.
    ..###.
    ..#...
    ......
    ......
    2
    No solution
    3
    ####..
    .####.
    ..####
    ......
    ......
    ......
    4
    ####..
    .####.
    ...###
    .....#
    ......
    ......
    
  2. 예제 2

    입력
    1
    BCC BDE
    
    예상 출력
    1
    #####.
    .##.#.
    ..###.
    ..#...
    ......
    ......