특별한 드롭킥 2
시간 제한1초메모리 제한1024 MB
0번 구역에서 N번 구역까지 이동하는 최소 시간을 구한다. 장애물 무리를 최대 M번 한 칸씩 밀 수 있고, 파괴는 2초가 걸린다.
문제
NLCS Jeju의 건물은 부실해서 벽이나 문 등을 드롭킥으로 부술 수 있다.
NLCS Jeju의 복도는 번째부터 번째까지 정사각형 구역으로 나눌 수 있으며, 동호가 있는 번째 구역을 제외한 각 구역에는 장애물이 존재할 수 있다. 동호는 번째 구역에서 교실이 있는 번째 구역까지 가능한 한 빠르게 이동하고 싶다.
동호는 복도의 구조를 나타낸 길이 의 문자열 를 가지고 있다. 정수 에 대해 가 X라면 번째 구역에 장애물이 존재하고, 가 .라면 번째 구역에 장애물이 존재하지 않는다.
동호는 장애물을 지나 빠르게 교실에 도착하기 위해 장애물을 다음과 같이 최대 번 움직일 수 있다.
- 장애물을 구역의 번호가 커지는 방향으로 밀어 한 칸 움직인다. 이때 구역의 번호가 커지는 방향으로 연속한 모든 장애물이 함께 움직인다.
- 장애물을 구역의 번호가 작아지는 방향으로 밀어 한 칸 움직인다. 이때 구역의 번호가 작아지는 방향으로 연속한 모든 장애물이 함께 움직인다.
이때 장애물은 밀린 후에도 번째부터 번째까지의 구역 안에 있어야 한다.
장애물을 최대 번 움직인 후, 동호는 두 가지 기술을 적절히 섞어 교실로 이동한다.
- 초에 걸쳐 구역의 번호가 커지는 방향으로 한 칸 이동한다. 이동하려는 칸에 장애물이 있으면 이동할 수 없다.
- 초에 걸쳐 동호와 이웃한 장애물을 파괴한다. 파괴한 장애물과 이웃한 장애물도 함께 파괴할 수 있다. 장애물을 파괴한 이후에는 파괴한 장애물이 있던 위치로 이동한다. 여러 개를 파괴한 경우 그 중 원하는 위치로 이동할 수 있다.
동호는 교실에 도달하는 시간을 최소화하려고 한다. 교실에 도달하는 데 얼마나 시간이 걸릴지 구하라.
입력
첫 번째 줄에 과 이 공백으로 구분되어 주어진다.
두 번째 줄에 복도의 구조를 나타내는 길이 의 문자열 가 주어진다. 가 X라면 번째 구역에 장애물이 존재하고, 가 .라면 번째 구역에 장애물이 존재하지 않는다.
출력
동호가 교실에 도달하는 데 몇 초가 필요한지 정수로 출력한다.