우아한 다이아몬드 (Small)

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

요약
주어진 숫자 다이아몬드를 가로와 세로로 대칭인 더 큰 다이아몬드로 확장하고 추가 숫자를 최소화합니다.
난이도

보통10점 중 6점

유형
완전 탐색, 행렬
정답자
아직 제출이 없습니다

문제

왕이 우아한 다이아몬드를 만들라고 당신을 고용했다. 우아한 다이아몬드는 숫자로 이루어진 2차원 도형이고, 가로축과 세로축 모두에 대해 대칭이다. 다음 네 도형은 모두 우아한 다이아몬드다.

  2
 3 3
4 1 4
 3 3
  2

 8
8 8
 8

 3
2 2
 3

7

다음 세 도형은 다이아몬드이지만 우아하지 않다.

 2
1 1
 1

  1
 1 2
1 1 1
 2 1
  1

  3
 1 1
3 1 3
 1 1
  2

다음 세 도형은 아예 다이아몬드가 아니다.

  1
 1 1

 2
222
 2

8   8
  0
00000

왕은 다이아몬드를 하나 준다. 이 다이아몬드는 우아하지 않을 수도 있다. 당신이 할 일은 다이아몬드를 확장해서 우아하게 만드는 것이다. 확장은 숫자를 덧붙여 더 큰 다이아몬드로 만드는 작업이다. 돈을 많이 쓰고 싶지 않으니 비용을 최소로 해야 한다.

정의

크기가 kk인 다이아몬드는 0부터 9까지의 숫자를 공백 한 칸으로 구분해 적은 2k−12k-1개의 줄이며, 배치 규칙은 다음과 같다.

  • 1≤i≤k1 \le i \le k인 줄 ii는 공백 k−ik-i개를 적고, 그 뒤에 숫자 ii개를 공백 한 칸으로 구분해 적는다.
  • k<i<2kk < i < 2k인 줄 ii는 공백 i−ki-k개를 적고, 그 뒤에 숫자 2k−i2k-i개를 공백 한 칸으로 구분해 적는다.

크기가 kk인 우아한 다이아몬드는 크기가 kk인 다이아몬드 가운데 다음 두 대칭 조건을 모두 만족하는 것이다. 줄 ii에 있는 숫자의 개수를 cic_i라고 하자.

  • 가로 대칭: 줄 ii의 jj번째 숫자(j=1j=1이 첫 숫자)는 같은 줄의 ci+1−jc_i+1-j번째 숫자와 같다.
  • 세로 대칭: 줄 ii의 jj번째 숫자(i=1i=1이 첫 줄)는 줄 2k−i2k-i의 jj번째 숫자와 같다.

크기가 kk인 다이아몬드에 숫자를 덧붙이는 작업을 확장이라고 한다. 확장한 결과는 다음 성질을 만족한다.

  • 결과는 크기가 kk 이상인 다이아몬드다.
  • 원래 다이아몬드가 결과 안에 그대로 들어 있다. 즉 정수 XX와 YY가 존재해서, 원래 다이아몬드의 ii번째 줄 jj번째 문자가 공백이 아니라 숫자인 모든 ii와 jj에 대해 결과의 i+Yi+Y번째 줄 j+Xj+X번째 문자도 숫자이고 값이 같다.

확장의 비용은 결과의 숫자 개수에서 원래 다이아몬드의 숫자 개수를 뺀 값이다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다. 각 테스트 케이스는 정수 kk가 혼자 적힌 줄 하나와 크기가 kk인 다이아몬드로 이루어진다.

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤k≤101 \le k \le 10

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 주어진 다이아몬드를 우아한 다이아몬드로 확장하는 최소 비용이다. 이미 우아한 다이아몬드라면 yy는 0이다.

힌트

예제에는 테스트 케이스가 네 개 있다. 앞의 두 개는 각각 크기 1, 크기 2의 우아한 다이아몬드라서 확장할 필요가 없고 비용은 0이다. 세 번째는 다음 다이아몬드로 확장할 수 있다.

  3
 1 1
1 2 1
 1 1
  3

확장 방법은 여러 가지이지만 이 방법의 비용 5가 가장 작다. 네 번째는 다음 다이아몬드로 확장할 수 있다.

   9
  1 1
 6 3 6
9 5 5 9
 6 3 6
  1 1
   9

이때 비용은 7이다.

예제6

  1. 예제 1

    입력
    4
    1
    0
    2
     1
    2 2
     1
    2
     1
    1 2
     1
    3
      1
     6 3
    9 5 5
     6 3
      1
    
    예상 출력
    Case #1: 0
    Case #2: 0
    Case #3: 5
    Case #4: 7
    
  2. 예제 2

    입력
    1
    1
    7
    
    예상 출력
    Case #1: 0
    
  3. 예제 3

    입력
    10
    1
    3
    2
     3
    5 5
     3
    3
      2
     3 3
    7 5 7
     3 3
      2
    4
       4
      0 0
     2 7 2
    1 8 8 1
     2 7 2
      0 0
       4
    5
        3
       6 6
      6 9 6
     3 3 3 3
    6 6 4 6 6
     3 3 3 3
      6 9 6
       6 6
        3
    6
         6
        1 1
       0 6 0
      1 4 4 1
     7 2 8 2 7
    4 0 1 1 0 4
     7 2 8 2 7
      1 4 4 1
       0 6 0
        1 1
         6
    7
          1
         3 3
        5 4 5
       5 3 3 5
      1 5 8 5 1
     5 5 5 5 5 5
    0 1 3 2 3 1 0
     5 5 5 5 5 5
      1 5 8 5 1
       5 3 3 5
        5 4 5
         3 3
          1
    8
           3
          4 4
         4 0 4
        7 5 5 7
       8 7 4 7 8
      9 7 5 5 7 9
     9 9 8 8 8 9 9
    9 9 6 3 3 6 9 9
     9 9 8 8 8 9 9
      9 7 5 5 7 9
       8 7 4 7 8
        7 5 5 7
         4 0 4
          4 4
           3
    9
            2
           5 5
          0 6 0
         2 0 0 2
        7 3 1 3 7
       5 9 6 6 9 5
      4 6 1 9 1 6 4
     9 4 2 7 7 2 4 9
    8 2 3 0 2 0 3 2 8
     9 4 2 7 7 2 4 9
      4 6 1 9 1 6 4
       5 9 6 6 9 5
        7 3 1 3 7
         2 0 0 2
          0 6 0
           5 5
            2
    10
             0
            4 4
           6 8 6
          4 1 1 4
         9 9 9 9 9
        0 8 3 3 8 0
       5 1 8 0 8 1 5
      0 2 7 9 9 7 2 0
     5 6 7 6 6 6 7 6 5
    2 0 5 3 0 0 3 5 0 2
     5 6 7 6 6 6 7 6 5
      0 2 7 9 9 7 2 0
       5 1 8 0 8 1 5
        0 8 3 3 8 0
         9 9 9 9 9
          4 1 1 4
           6 8 6
            4 4
             0
    
    예상 출력
    Case #1: 0
    Case #2: 0
    Case #3: 0
    Case #4: 0
    Case #5: 0
    Case #6: 0
    Case #7: 0
    Case #8: 0
    Case #9: 0
    Case #10: 0
    
  4. 예제 4

    입력
    1
    2
     1
    2 3
     4
    
    예상 출력
    Case #1: 12
    
  5. 예제 5

    입력
    4
    2
     1
    2 2
     3
    2
     1
    2 3
     1
    3
      5
     4 4
    1 2 1
     4 4
      5
    3
      5
     4 6
    1 2 3
     4 6
      5
    
    예상 출력
    Case #1: 5
    Case #2: 5
    Case #3: 0
    Case #4: 16
    
  6. 예제 6

    입력
    4
    1
    3
    4
       3
      3 3
     3 3 3
    3 3 3 3
     3 3 3
      3 3
       3
    7
          3
         3 3
        3 3 3
       3 3 3 3
      3 3 3 3 3
     3 3 3 3 3 3
    3 3 3 3 3 3 3
     3 3 3 3 3 3
      3 3 3 3 3
       3 3 3 3
        3 3 3
         3 3
          3
    10
             3
            3 3
           3 3 3
          3 3 3 3
         3 3 3 3 3
        3 3 3 3 3 3
       3 3 3 3 3 3 3
      3 3 3 3 3 3 3 3
     3 3 3 3 3 3 3 3 3
    3 3 3 3 3 3 3 3 3 3
     3 3 3 3 3 3 3 3 3
      3 3 3 3 3 3 3 3
       3 3 3 3 3 3 3
        3 3 3 3 3 3
         3 3 3 3 3
          3 3 3 3
           3 3 3
            3 3
             3
    
    예상 출력
    Case #1: 0
    Case #2: 0
    Case #3: 0
    Case #4: 0