이미지 인식

시간 제한1초메모리 제한128 MB

요약
격자 위에서 움직이며 픽셀 색을 읽어 d개의 이미지 중 어느 것인지 식별하는 로봇 프로그램을 설계해 최악의 이동 횟수를 최소화하는 문제입니다.
난이도

어려움10점 중 8점

유형
BFS, 그래프, 완전 탐색, 시뮬레이션
정답자
아직 제출이 없습니다

문제

아이린은 Novel Efforts in Effective Recognition of Characters(NEERC)에서 일한다. 그녀의 새 프로젝트는 로봇을 이용한 이미지 인식이다.

먼저 아주 단순한 모형에서 시작한다. 고정된 이미지가 dd개 있으며, 각각 숫자 00부터 d−1d - 1까지로 불린다. 각 이미지는 흰색과 검은색 단위 정사각형(픽셀)으로 채워진 w×hw \times h 직사각형이다. 모든 이미지는 서로 다르다(어떤 두 이미지도 최소한 한 픽셀에서 다르다).

로봇은 이미지들 중 하나의 왼쪽 위 픽셀에 놓인 뒤, 아래에서 설명하는 언어로 작성된 프로그램을 실행한다. 로봇의 임무는 자신이 어느 이미지 위에 놓였는지 알아내는 것이다.

로봇의 프로그래밍 언어는 다음 명령들로 이루어진다.

  • U, D, L, R --- 이동 명령. 로봇을 각각 위, 아래, 왼쪽, 오른쪽으로 한 픽셀 옮긴다. 이동으로 로봇이 이미지 밖으로 나가면 임무는 실패한다.
  • (⟨subprogram_w⟩\langle subprogram\_w \rangle:⟨subprogram_b⟩\langle subprogram\_b \rangle) --- 조건 연산. 로봇은 자신이 놓인 픽셀의 색을 확인한다. 흰색이면 ⟨subprogram_w⟩\langle subprogram\_w \rangle를, 그렇지 않으면 ⟨subprogram_b⟩\langle subprogram\_b \rangle를 실행한다.
  • 0, 1, ..., 9 --- 인식 명령. 로봇은 자신이 어느 이미지 위에 있는지 알게 되면 이 중 하나를 실행하며, 그 즉시 프로그램이 종료된다.

각 이동 명령은 한 시간 단위가 걸린다. 조건 연산과 인식 명령은 즉시 수행된다.

프로그램이 올바르다는 것은, 로봇이 숫자 ii의 이미지 위에 놓였을 때 실행이 항상 명령 i로 끝나는 것을 뜻한다. 올바른 프로그램들 중에서 최악의 경우 실행 시간 --- 가능한 dd개의 시작 이미지에 대해 실행되는 이동 명령 수의 최댓값 --- 이 가장 작은 것을 생각하자. 이 최소 가능한 최악의 실행 시간을 구하여라.

입력

첫째 줄에 세 정수 dd, hh, ww가 주어진다(1≤d≤101 \le d \le 10; 1≤h,w≤101 \le h, w \le 10). 각각 이미지의 개수, 그리고 각 이미지의 높이와 너비이다.

이후에는 dd개의 이미지 설명이 주어진다. 각 설명은 길이 ww인 hh개의 줄로 이루어지며, 모든 문자는 B(검은색) 또는 W(흰색)이다. 설명은 이미지 00부터 d−1d - 1까지 순서대로 주어지며, 하나의 빈 줄로 구분된다.

출력

올바른 인식 프로그램의 최소 가능한 최악의 실행 시간을 정수 하나로 출력한다.

노트

그림은 로봇이 구별해야 하는 세 이미지의 예시를 보여 준다.

예제4

  1. 예제 1

    입력
    3 5 4
    WBBW
    BWWB
    BWWB
    BWWB
    WBBW
    
    WWBW
    WBBW
    BWBW
    WWBW
    WWBW
    
    WBBW
    BWWB
    WWBW
    WBWW
    BBBB
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2 1 1
    W
    
    B
    
    예상 출력
    0
    
  3. 예제 3

    입력
    2 1 3
    WWB
    
    WWW
    
    예상 출력
    2
    
  4. 예제 4

    입력
    2 2 2
    BW
    WW
    
    WW
    WW
    
    예상 출력
    0