7세그먼트 표시기는 막대 7개로 0부터 9까지의 숫자 하나를 나타내는 장치다. 환전소나 주유소의 가격판에서 흔히 볼 수 있다.
셸비는 이런 표시기 3개를 회로에 연결해서 0 이상 999 이하의 수를 앞자리 0 없이 보여주는 세 자리 표시기를 만들었다. 여기에 1초마다 수가 1씩 올라가고 999 다음에는 다시 0으로 돌아가는 순환 카운터 기능까지 붙였다.
셸비는 회사의 기술자이고, 이 세 자리 카운터는 사무실 벽에 걸려 있다. 셸비는 퇴근 시각인 매일 15:00:00에 카운터가 가리키는 수를 종이에 적어야 한다. 보안 때문에 사장이 직접 시킨 일이다.
그런데 어제는 그 수를 적는 것을 잊어버렸다. 다행히 15:00:00이나 그 이후에 여러 감시 카메라가 찍은 사진을 구했다. 문제는 사진마다 막대 21개 중 일부가 켜졌는지 꺼졌는지 또렷하게 보이지 않는다는 점이다.
사진마다 막대 21개의 상태(보이면서 켜짐, 보이면서 꺼짐, 이 사진에서는 보이지 않음)와 찍힌 시각이 주어진다. 15:00:00에 카운터가 가리키던 수를 구하라.
입력은 여러 테스트 케이스로 이루어진다. 한 테스트 케이스에는 사진이 1개 이상 20개 이하로 들어 있다.
사진 하나는 6줄이다. 첫 줄에는 15:00:00부터 몇 초가 지났는지를 나타내는 61200 이하의 음이 아닌 정수 하나가 주어진다. 이어지는 5줄이 사진이다.
막대 21개가 모두 보이면서 켜져 있으면, 즉 표시기가 888을 가리키면 5줄은 다음과 같다.
- - -
| || || |
- - -
| || || |
- - -
보이지만 꺼져 있는 막대 자리에는 -나 | 대신 마침표 .를 쓴다. 이 사진에서 보이지 않는 막대 자리에는 별표 *를 쓴다.
또렷한 사진에서 0부터 9까지의 숫자는 다음과 같이 나타난다. 오른쪽 끝의 off는 막대 7개가 모두 꺼져서 아무 숫자도 표시하지 않는 자리다.
0 1 2 3 4 5 6 7 8 9 off
- . - - . - - - - - .
| | . | . | . | | | | . | . . | | | | | . .
. . - - - - - . - - .
| | . | | . . | . | . | | | . | | | . | . .
- . - - . - - . - - .
카운터는 앞자리 0을 표시하지 않는다. 예를 들어 값이 70이면 왼쪽에서 두 번째 자리에 7이, 세 번째 자리에 0이 나타나고 첫 번째 자리는 막대가 모두 꺼진다. 070으로 표시하지는 않는다.
테스트 케이스와 테스트 케이스 사이에는 # 한 글자만 있는 줄이 들어간다. 입력의 마지막 줄에는 $ 한 글자만 있다.
줄 왼쪽에는 공백이 더 붙지 않지만 줄 오른쪽 끝에는 공백이 더 붙어 있을 수 있다. 의미가 있는 것은 왼쪽부터 9개 열뿐이다.
테스트 케이스마다 15:00:00의 카운터 값을 알아낼 수 있으면, 즉 모든 사진과 맞아떨어지는 값이 하나뿐이면 그 값을 출력한다.
알아낼 수 없으면 물음표 ?를 먼저 쓰고 공백 하나를 둔 다음, 15:00:00에 카운터가 가리켰을 수 있는 서로 다른 값의 개수를 쓴다. 사진끼리 서로 어긋나서 가능한 값이 하나도 없으면 ? 0을 출력한다.