공룡 뼈 스캔

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

요약
행이 정렬된 두 이진 스캔이 주어질 때, 오른쪽 스캔을 수평으로 밀어 1들이 겹침이나 빈틈 없이 하나의 직사각형을 채울 수 있는지 판별한다.
난이도

보통10점 중 5점

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

문제

세라 톱스는 공룡 뼈대를 복원하는 고생물학자다. 두 뼈가 서로 맞물리는지 판단하는 일이 늘 골칫거리다. 뼈를 직접 맞춰 보는 대신, 모아 둔 뼈를 전부 스캔해 두고 그 결과만으로 어느 뼈끼리 이어지는지 알아내려고 한다. 아래 왼쪽 두 그림은 서로 다른 두 뼈의 끝부분을 스캔한 것이다.

스캔 1스캔 2합친 모습

스캔에서 1은 뼈가 있는 칸을, 0은 빈칸을 뜻한다. 두 스캔을 합쳤을 때 1이 빈틈도 겹침도 없이 직사각형 하나를 가득 채우면 두 뼈는 맞물린다. 위 오른쪽 그림처럼 스캔 1은 스캔 2와 맞물리지만, 아래 스캔 3이나 스캔 4와는 맞물리지 않는다.

스캔 3스캔 4

두 스캔은 행을 맞춘 채 가로로만 민다. 오른쪽 스캔을 정수 칸만큼 민 뒤, 1이 놓인 칸 전체가 어느 칸도 겹치지 않으면서 직사각형 하나를 빈틈없이 채우면 두 스캔은 맞물린다. 0만 들어 있는 열은 그 직사각형 밖에 놓여도 된다. 왼쪽 스캔의 첫 열과 오른쪽 스캔의 마지막 열은 모두 1이므로, 직사각형의 왼쪽 끝은 왼쪽 스캔의 첫 열이고 오른쪽 끝은 오른쪽 스캔의 마지막 열이다.

입력

첫 줄에 양의 정수 rr, c1c_1, c2c_2가 주어진다. rr은 두 스캔의 행 수, c1c_1은 왼쪽 스캔의 열 수, c2c_2는 오른쪽 스캔의 열 수다.

다음 rr개 줄에는 각각 문자 c1c_1개가 주어지며, 이것이 왼쪽 스캔이다. 이어지는 rr개 줄에는 각각 문자 c2c_2개가 주어지며, 이것이 오른쪽 스캔이다. 스캔에 쓰이는 문자는 0 또는 1뿐이다.

rr, c1c_1, c2c_2의 최댓값은 20이다. 모든 입력에서 왼쪽 스캔의 첫 열과 오른쪽 스캔의 마지막 열은 전부 1이다.

출력

두 스캔이 맞물리면 Yes를, 맞물리지 않으면 No를 출력한다. 1이 놓인 칸이 하나라도 직사각형 밖으로 나가면 맞물린 것이 아니다.

예제4

  1. 예제 1

    입력
    5 5 3
    11100
    10000
    11100
    10000
    11100
    001
    111
    001
    111
    001
    
    예상 출력
    Yes
    
  2. 예제 2

    입력
    5 5 3
    11100
    10000
    11100
    10000
    11100
    001
    111
    011
    111
    001
    
    예상 출력
    No
    
  3. 예제 3

    입력
    1 1 1
    1
    1
    
    예상 출력
    Yes
    
  4. 예제 4

    입력
    3 4 4
    1000
    1000
    1000
    0001
    0001
    0001
    
    예상 출력
    Yes