현대모비스 자율 주행 테스팅 2

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

요약
2행짜리 샘플 트랙 M종류와 그것을 이어 붙인 순서 K개가 주어질 때, 이어 붙인 2행 트랙의 첫 열 도로 칸에서 마지막 열 도로 칸까지 이동할 수 있는지 판정하고 최소 이동 횟수 또는 -1을 출력합니다. 이때 한 샘플 트랙의 상태 전이를 행렬로 압축해 이어 붙이는 것이 핵심입니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 행렬, 구현
정답자
아직 제출이 없습니다

문제

이 문제는 현대모비스 자율 주행 테스팅 1 문제와 입력 형식이 다릅니다. 이 문제의 코드로 현대모비스 자율 주행 테스팅 1 문제를 해결할 수 없음에 유의하세요.

현대모비스는 모빌리티 플랫폼 프로바이더로서 SDV(Software Defined Vehicle)의 시대를 선도하고자 자율주행, 전동화, 커넥티비티 등 다양한 분야에서 SW 연구개발을 적극 진행하고 있다. 특히 현대모비스의 서산 주행 시험장에서는 자율 주행 자동차 개발을 위한 시범 주행이 한창이다. 샘플 주행 트랙은 모두 MM종류이며, 각 샘플 주행 트랙에는 11번부터 MM번까지의 번호가 매겨져 있다. ii번 샘플 주행 트랙은 22행 N_iN\_i열로 이루어져 있으며, 트랙의 각 칸은 도로 혹은 장애물 중 하나로 구성되어 있다. 시범 주행 트랙은 KK개의 샘플 주행 트랙을 차례로 이어 붙여 만든 형태이다. 시범 주행 트랙에 쓰인 샘플 주행 트랙의 번호를 차례로 A_1,A_2,⋯ ,A_KA\_1,A\_2,\cdots ,A\_K라 하면 시범 주행 트랙은 22행 ∑_i=1KN_A_i\sum\_{i=1}^KN\_{A\_i}열의 형태가 된다. 자동차는 아래의 두 가지 방법을 이용하여 트랙 위를 이동할 수 있다.

  • 차선 변경: 자동차가 같은 열의 다른 행으로 이동한다. 즉 자동차의 현재 위치가 11행 jj열이라면 22행 jj열로, 22행 jj열이라면 11행 jj열로 이동한다.
  • 직진: 자동차가 같은 행의 다음 열로 이동한다. 즉 자동차의 현재 위치가 ii행 jj열이라면 ii행 j+1j+1열로 이동한다.

두 경우 모두 도착하는 칸에 장애물이 있어서는 안 된다.

시범 주행은 시범 주행 트랙의 첫 번째 열에서 시작하며, 마지막 열에 도달하면 끝난다. 시작하는 칸이나 끝나는 칸은 자유롭게 정할 수 있다. 단, 시작하는 칸과 끝나는 칸은 모두 도로여야 한다. 자율 주행 자동차가 시범 주행 트랙을 완주할 수 있는지 판별하고, 완주하는 것이 가능하다면 완주하기 위해 필요한 최소 이동 횟수를 구하여라.

입력

첫째 줄에 샘플 주행 트랙의 종류 수 MM, 샘플 주행 트랙을 이어 붙인 횟수 KK가 공백으로 구분되어 주어진다. (1≤M,K≤200 000)(1 \le M, K \le 200\ 000)

둘째 줄에 시범 주행 트랙을 구성하는 샘플 주행 트랙의 번호 A_1,A_2,⋯ ,A_KA\_1, A\_2, \cdots, A\_K가 공백으로 구분되어 차례대로 주어진다. (1≤A_i≤M)(1 \le A\_i \le M)

셋째 줄부터 2M2M개의 줄에 걸쳐 ii번 샘플 주행 트랙의 정보가 주어진다.

2i+12i+1번째 줄에 ii번 샘플 주행 트랙의 11행을 나타내는 길이가 N_iN\_i인 문자열 S_i1S\_{i1}이 주어진다. (1≤N_i≤500 000)(1 \le N\_i \le 500\ 000)

2i+22i+2번째 줄에 ii번 샘플 주행 트랙의 22행을 나타내는 길이가 N_iN\_i인 문자열 S_i2S\_{i2}가 주어진다.

모든 문자열은 . 또는 #으로 구성됨이 보장된다. .은 도로, #은 장애물을 의미한다. N_iN\_i의 합이 500 000500\ 000 이하임이 보장된다.

출력

자율 주행 자동차가 시범 주행 트랙을 완주하기 위해 필요한 최소 이동 횟수를 출력하여라. 트랙을 완주하는 것이 불가능하면 대신 -1을 출력하여라.

예제4

  1. 예제 1

    입력
    2 3
    1 2 1
    #..
    ...
    ..
    #.
    
    예상 출력
    9
    
  2. 예제 2

    입력
    3 3
    1 3 1
    .#.
    ...
    ##
    ##
    .
    #
    
    예상 출력
    8
    
  3. 예제 3

    입력
    2 2
    1 2
    ...
    ...
    #..
    ..#
    
    예상 출력
    6
    
  4. 예제 4

    입력
    2 3
    1 2 1
    ..#
    ...
    .
    #
    
    예상 출력
    -1