폰 (Pawns)
시간 제한0.2초메모리 제한64 MB
1×N 보드에서 흰 폰은 왼쪽으로, 검은 폰은 오른쪽으로 한 칸 이동하거나 점프할 수 있다. 모든 흰 폰을 왼쪽에, 검은 폰을 오른쪽에 모으는 최소 이동 횟수를 구한다.
문제
"폰(Pawns)"은 길이가 이고 너비가 인 판 위에서 진행하는 게임이다. 판은 개의 단위 칸으로 나뉘며, 왼쪽부터 오른쪽으로 번으로 번호가 매겨져 있다. 각 칸은 매 순간 비어 있거나 폰 하나가 놓여 있다. 모든 폰은 흰색 또는 검은색이며, 각 폰의 처음 위치가 주어진다.
폰은 다음 규칙에 따라 움직인다.
- 흰색 폰은 두 가지 방법으로 움직일 수 있다.
- 바로 왼쪽 칸이 비어 있으면 그 칸으로 이동한다.
- 바로 왼쪽 칸이 다른 폰으로 차 있고 그보다 한 칸 더 왼쪽 칸이 비어 있으면, 왼쪽 이웃을 뛰어넘어 두 칸 왼쪽으로 점프한다.
- 검은색 폰은 두 가지 방법으로 움직일 수 있다.
- 바로 오른쪽 칸이 비어 있으면 그 칸으로 이동한다.
- 바로 오른쪽 칸이 다른 폰으로 차 있고 그보다 한 칸 더 오른쪽 칸이 비어 있으면, 오른쪽 이웃을 뛰어넘어 두 칸 오른쪽으로 점프한다.
폰은 움직인 뒤에도 항상 판 위에 있어야 한다. 어떤 폰이 움직일 수 있는 상황이라면 두 조건은 동시에 성립할 수 없으므로, 그 폰은 정확히 한 가지 방법으로만 움직일 수 있다.
모든 흰색 폰이 판의 앞쪽(가장 왼쪽) 칸들을 빈틈없이 채우고, 모든 검은색 폰이 판의 뒤쪽(가장 오른쪽) 칸들을 빈틈없이 채우면 게임이 완성된다. 즉, 흰색 폰은 위치를 연속해서 차지하고, 검은색 폰은 위치를 연속해서 차지한다.
처음 위치가 주어질 때, 게임을 완성하는 데 필요한 최소 이동 횟수를 구하여라. 유한한 횟수 안에 게임을 완성할 수 있음이 보장된다.
입력
첫째 줄에 판의 길이 이 주어진다. 둘째 줄에는 집합 의 원소인 정수 개가 공백으로 구분되어 주어진다. 은 빈 칸, 은 흰색 폰, 는 검은색 폰을 뜻한다. 번째 수는 판의 번째 칸을 나타낸다.
출력
게임을 완성하는 데 필요한 최소 이동 횟수를 정수 하나로 출력한다.
제한
- ;
- 모든 테스트에는 흰색 폰이 적어도 하나, 검은색 폰이 적어도 하나 있다.
힌트
예제 입력의 판 2 0 0 2 1에 대해, 처음 배치와 번의 이동을 각각 마친 뒤의 배치를 아래 그림으로 나타냈다.
