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

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

세 방향에서 본 그림자

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

요약
x, y, z축 방향의 n x n 정사영 그림자가 세 개 주어질 때, 단위 정육면체 집합으로 그 세 그림자를 정확히 만들 수 있는지 판정한다.
난이도

보통10점 중 7점

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

문제

당신의 친구는 ICPC(Image-Containing Projection Cube)를 설계하는 예술가다. ICPC는 한 변의 길이가 정수인 수정 큐브로, 일부 영역은 정교한 레이저 가공으로 불투명하게 만들어진다. 각 불투명 영역은 정수 좌표에 정렬된 단위 크기 정육면체다.

그림 A.1은 Sample Input 1에 주어진 ICPC를 나타낸다. 초록색 선은 수정 큐브의 모서리이고, 파란색 작은 정육면체는 수정 내부의 불투명한 정육면체 영역이다.

그림 A.1. Sample Input 1의 ICPC

ICPC는 각 면에 수직인 세 개의 평행광을 쬐어 불투명 영역이 만드는 실루엣을 감상하기 위한 것이다. 그림 A.2는 ICPC와 그 세 실루엣을 나타낸다.

그림 A.2. Sample Input 1의 ICPC와 그 실루엣 (일점쇄선은 왼쪽 면에 수직인 평행광의 모서리)

주어진 실루엣을 만드는 ICPC가 존재하는지 판별하는 프로그램을 작성하라.

입력

입력은 다음과 같은 형식의 단일 테스트 케이스로 이루어진다.

n
s1
.
.
.
sn
t1
.
.
.
tn
u1
.
.
.
un

여기서 n은 ICPC의 크기이며, 1 이상 100 이하의 정수다.

크기 n인 ICPC는 n × n개의 어두운 칸과 밝은 칸으로 이루어진 세 실루엣을 만든다. 불투명 단위 정육면체의 그림자에 가려진 칸은 어둡고, 그렇지 않은 칸은 밝다. 입력의 두 번째 줄부터 시작하는 3n개의 줄은 각각 n개의 숫자로 이루어지며, ICPC의 세 실루엣을 나타낸다. ‘0’은 밝은 칸, ‘1’은 어두운 칸이다. 3n개의 줄에서 적어도 하나의 숫자는 ‘1’이다.

먼저 yz평면의 실루엣 데이터가 주어진다. 첫 줄 s1은 z좌표가 가장 큰 칸들을 y좌표 순서로 나타낸다. 이어지는 s2, ..., sn은 z좌표가 작아지는 순서로 칸들을 나타낸다.

다음으로 zx평면의 실루엣 데이터가 주어진다. 첫 줄 t1은 x좌표가 가장 큰 칸들을 z좌표 순서로 나타낸다. 이어지는 t2, ..., tn은 x좌표가 작아지는 순서로 칸들을 나타낸다.

마지막으로 xy평면의 실루엣 데이터가 주어진다. 첫 줄 u1은 y좌표가 가장 큰 칸들을 x좌표 순서로 나타낸다. 이어지는 u2, ..., un은 y좌표가 작아지는 순서로 칸들을 나타낸다.

다음 그림은 Sample Input 1에 주어진 ICPC의 세 실루엣을 나타낸다.

⇓⇓⇓
```
0 1 0
0 1 0
1 1 1
```(yz평면)```
1 0 0
1 1 1
1 0 1
```(zx평면)```
0 1 1
1 1 1
0 1 0

그림 A.3. 실루엣의 0-1 표현 (Sample Input 1)

출력

주어진 실루엣을 만드는 ICPC를 만들 수 있으면 “Yes”를 출력한다. 그렇지 않으면 “No”를 출력한다.

예제4

  1. 예제 1

    입력
    3
    010
    010
    111
    100
    111
    101
    011
    111
    010
    
    예상 출력
    Yes
    
  2. 예제 2

    입력
    2
    00
    01
    00
    10
    10
    00
    
    예상 출력
    Yes
    
  3. 예제 3

    입력
    2
    00
    00
    00
    10
    10
    00
    
    예상 출력
    No
    
  4. 예제 4

    입력
    2
    01
    00
    00
    10
    10
    00
    
    예상 출력
    No