만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

오리엔티어링

면접 대비

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

요약
스프링오알라가 왼쪽 위 칸에서 오른쪽으로 출발해 주어진 칸에 도착할 때, 놓쳐야 하는 화살표의 최소 개수를 구합니다.
난이도

보통10점 중 5점

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

문제

스프링오알라는 오리엔티어링을 시작했지만, 솔직히 말해 그다지 잘하지는 못한다. 길목마다 방향 화살표가 세워져 있는데도 거의 매번 길을 잃는다. 그녀가 달리는 숲은 NN개의 행과 MM개의 열로 이루어진 직사각형 격자로 볼 수 있으며, 격자에는 ^, >, v, < 네 종류의 화살표가 놓여 있다.

점(.)은 그 칸에 화살표가 없다는 뜻이다. 스프링오알라는 왼쪽 위 칸으로 들어가 오른쪽을 향해 달리기 시작한다. 화살표가 있는 칸에 닿으면 자동으로 방향을 바꿔 화살표가 가리키는 방향으로 달린다. 다만 가끔 화살표를 놓쳐서 그 앞을 지나쳐 직진하기도 한다.

숲의 한 위치가 주어졌을 때, 스프링오알라가 그 위치에 도달하기 위해 최소한 몇 개의 화살표를 놓쳤어야 하는지 구하라. 그녀가 숲 밖으로 나가는 일은 없다. 화살표를 놓치는지 여부는 그 칸을 전에 지나갔는지와 상관없다. 따라서 같은 화살표를 두 번 놓치면 두 번의 놓침으로 센다. 주어진 위치에 도달할 수 있는 방법은 항상 적어도 하나 있다.

입력

첫 줄에 네 정수 NN, MM, RR, CC (1≤R≤N≤8001 \leq R \leq N \leq 800, 1≤C≤M≤8001 \leq C \leq M \leq 800)가 주어진다. 각각 숲의 높이와 너비, 그리고 스프링오알라가 마지막에 도착한 행과 열이다. 행은 1부터 NN까지, 열은 1부터 MM까지 번호가 매겨진다. 이어서 각각 MM개의 문자로 이루어진 NN개의 줄이 숲을 나타낸다. 각 문자는 ., v(아래), ^(위), <(왼쪽), >(오른쪽) 중 하나이다.

출력

스프링오알라가 놓친 화살표의 최소 개수를 정수 하나로 출력한다.

힌트

첫 번째 경우에서는 아래 방향 화살표 중 하나를 제외하고 모두 놓쳤다. 두 번째 경우에서는 가운데 화살표를 두 번 놓쳤다. 세 번째 경우에서는 화살표를 전혀 놓치지 않았다.

예제3

  1. 예제 1

    입력
    3 10 2 1
    ..vvvvvvv>
    ..vvvvvv<^
    <<<<<<<<..
    
    예상 출력
    12
    
  2. 예제 2

    입력
    3 3 2 1
    .v.
    .^<
    .>^
    
    예상 출력
    2
    
  3. 예제 3

    입력
    2 2 2 1
    vv
    ^<
    
    예상 출력
    0