디지털 덧셈

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

요약
세 개의 7세그먼트 숫자 줄이 겹쳐 만들어진 흑백 그림이 주어질 때, 이를 만들어낸 덧셈 중 사전순으로 가장 작은 것을 복원한다.
난이도

보통10점 중 6점

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

문제

데이드라는 세로셈으로 덧셈을 한다. 음이 아닌 정수 두 개를 위아래로 쓰고, 왼쪽을 0으로 채워 두 수의 자리 수를 같게 맞춘 다음 그 아래에 합을 쓴다. 예를 들어 77과 05를 더하면 82를 쓴다. 올림 때문에 합이 두 덧수보다 길어지면, 96과 07처럼 두 덧수 앞에 0을 하나씩 붙여 096과 007로 쓰고 합은 103이 된다. 세 수의 자리 수가 모두 같기만 하면 필요 없는 0을 앞에 더 붙여도 된다. 007과 004를 더해 011을 쓰는 것도 허용한다.

데이드라는 직접 만든 인쇄기로 이 세로셈을 찍는다. 더하기 기호와 가로줄은 찍지 않고, 숫자는 모두 아래 7세그먼트 글꼴의 한 칸으로 찍는다.

숫자켜지는 세그먼트
0위, 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래, 아래
1오른쪽 위, 오른쪽 아래
2위, 오른쪽 위, 가운데, 왼쪽 아래, 아래
3위, 오른쪽 위, 가운데, 오른쪽 아래, 아래
4왼쪽 위, 오른쪽 위, 가운데, 오른쪽 아래
5위, 왼쪽 위, 가운데, 오른쪽 아래, 아래
6위, 왼쪽 위, 가운데, 왼쪽 아래, 오른쪽 아래, 아래
7위, 오른쪽 위, 오른쪽 아래
8일곱 세그먼트 전부
9위, 왼쪽 위, 오른쪽 위, 가운데, 오른쪽 아래, 아래

그런데 인쇄기의 자리 간격이 잘못되어 숫자 칸이 모두 서로 겹쳐 찍혔다. 가로로 이웃한 두 숫자는 왼쪽 숫자의 오른쪽 두 세그먼트가 오른쪽 숫자의 왼쪽 두 세그먼트에 정확히 겹치도록 찍혔다. 세로로 이웃한 두 숫자는 위쪽 숫자의 아래 절반, 즉 세그먼트 네 개로 이루어진 정사각형이 아래쪽 숫자의 위 절반에 정확히 겹치도록 찍혔다.

어떤 자리에 검은 세그먼트가 하나라도 찍히면 그 자리는 검게 보인다. 그 자리에 닿는 숫자가 모두 그 세그먼트를 비워 두었으면 하얗게 보인다.

한 줄에 숫자가 ww개씩 세 줄이면 찍힌 그림은 격자가 된다. 가로 세그먼트 행은 5개이고 각 행에 세그먼트가 ww개, 세로 세그먼트 행은 4개이고 각 행에 세그먼트가 w+1w + 1개 있다. 가로 행은 위에서부터 00번부터 44번까지, 세로 행은 위에서부터 00번부터 33번까지, 한 행 안의 세그먼트는 왼쪽에서부터 00번부터 번호를 붙인다. ii번째 줄의 jj번째 숫자는 다음 세그먼트를 쓴다. 여기서 i=0i = 0은 첫 번째 덧수, i=1i = 1은 두 번째 덧수, i=2i = 2는 합이다.

  • 가로 세그먼트 (i,j)(i, j), (i+1,j)(i + 1, j), (i+2,j)(i + 2, j)를 위, 가운데, 아래 세그먼트로 쓴다.
  • 세로 세그먼트 (i,j)(i, j)와 (i,j+1)(i, j + 1)을 왼쪽 위, 오른쪽 위 세그먼트로 쓴다.
  • 세로 세그먼트 (i+1,j)(i + 1, j)와 (i+1,j+1)(i + 1, j + 1)을 왼쪽 아래, 오른쪽 아래 세그먼트로 쓴다.

찍힌 그림이 주어진다. 그렇게 찍히는 덧셈 하나를 복원하거나, 그런 덧셈이 없음을 판정하라.

입력

첫 줄에 정수 ww가 주어진다 (1≤w≤1001 \le w \le 100). ww는 세 줄 각각의 자리 수이다.

다음 9줄은 찍힌 그림을 나타낸다. 2i+12i + 1번째 줄에는 가로 행 ii의 값 ww개가, 2i+22i + 2번째 줄에는 세로 행 ii의 값 w+1w + 1개가 있다. 한 줄 안의 값은 공백 하나로 구분한다. 가로 행 5줄은 각 가로 세그먼트가 양옆 세로 세그먼트 사이에 오도록 맨 앞에 공백이 하나 더 있다. 값 1은 검은 세그먼트, 0은 하얀 세그먼트를 뜻한다.

출력

주어진 그림으로 찍히는 덧셈이 없으면 NO를 출력한다.

있으면 세 줄에 각각 정확히 ww자리를 출력한다. 첫 줄은 첫 번째 덧수, 둘째 줄은 두 번째 덧수, 셋째 줄은 두 수의 합이다. 같은 그림으로 찍히는 덧셈이 여러 개일 수 있다. 세 줄을 이어 붙인 문자열이 사전순으로 가장 작은 답을 출력한다. 세 줄의 길이가 모두 ww로 같으므로, 첫 줄을 가장 작게 만들고 그다음 둘째 줄을 가장 작게 만들면 된다. 셋째 줄은 두 수의 합이므로 그다음에는 저절로 정해진다.

예제3

  1. 예제 1

    입력
    2
     1 1
    0 1 1
     1 0
    0 1 1
     1 1
    0 1 1
     1 0
    0 1 1
     0 0
    
    예상 출력
    37
    34
    71
    
  2. 예제 2

    입력
    1
     1
    0 1
     1
    1 1
     1
    1 1
     1
    0 1
     0
    
    예상 출력
    2
    2
    4
    
  3. 예제 3

    입력
    1
     1
    1 0
     1
    1 1
     1
    1 1
     1
    0 1
     0
    
    예상 출력
    NO