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