아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

폰 (Pawns)

시간 제한0.2초메모리 제한64 MB

요약
1×N 보드에서 흰 폰은 왼쪽으로, 검은 폰은 오른쪽으로 한 칸 이동하거나 점프할 수 있다. 모든 흰 폰을 왼쪽에, 검은 폰을 오른쪽에 모으는 최소 이동 횟수를 구한다.
난이도

보통10점 중 6점

유형
BFS, 시뮬레이션, 완전 탐색
정답자
아직 제출이 없습니다

문제

"폰(Pawns)"은 길이가 NN이고 너비가 11인 판 위에서 진행하는 게임이다. 판은 NN개의 단위 칸으로 나뉘며, 왼쪽부터 오른쪽으로 1,2,…,N1, 2, \ldots, N번으로 번호가 매겨져 있다. 각 칸은 매 순간 비어 있거나 폰 하나가 놓여 있다. 모든 폰은 흰색 또는 검은색이며, 각 폰의 처음 위치가 주어진다.

폰은 다음 규칙에 따라 움직인다.

  • 흰색 폰은 두 가지 방법으로 움직일 수 있다.
    • 바로 왼쪽 칸이 비어 있으면 그 칸으로 이동한다.
    • 바로 왼쪽 칸이 다른 폰으로 차 있고 그보다 한 칸 더 왼쪽 칸이 비어 있으면, 왼쪽 이웃을 뛰어넘어 두 칸 왼쪽으로 점프한다.
  • 검은색 폰은 두 가지 방법으로 움직일 수 있다.
    • 바로 오른쪽 칸이 비어 있으면 그 칸으로 이동한다.
    • 바로 오른쪽 칸이 다른 폰으로 차 있고 그보다 한 칸 더 오른쪽 칸이 비어 있으면, 오른쪽 이웃을 뛰어넘어 두 칸 오른쪽으로 점프한다.

폰은 움직인 뒤에도 항상 판 위에 있어야 한다. 어떤 폰이 움직일 수 있는 상황이라면 두 조건은 동시에 성립할 수 없으므로, 그 폰은 정확히 한 가지 방법으로만 움직일 수 있다.

모든 흰색 폰이 판의 앞쪽(가장 왼쪽) 칸들을 빈틈없이 채우고, 모든 검은색 폰이 판의 뒤쪽(가장 오른쪽) 칸들을 빈틈없이 채우면 게임이 완성된다. 즉, 흰색 폰은 1,2,…1, 2, \ldots 위치를 연속해서 차지하고, 검은색 폰은 N,N−1,…N, N-1, \ldots 위치를 연속해서 차지한다.

처음 위치가 주어질 때, 게임을 완성하는 데 필요한 최소 이동 횟수를 구하여라. 유한한 횟수 안에 게임을 완성할 수 있음이 보장된다.

입력

첫째 줄에 판의 길이 NN이 주어진다. 둘째 줄에는 집합 {0,1,2}\{0, 1, 2\}의 원소인 정수 NN개가 공백으로 구분되어 주어진다. 00은 빈 칸, 11은 흰색 폰, 22는 검은색 폰을 뜻한다. ii번째 수는 판의 ii번째 칸을 나타낸다.

출력

게임을 완성하는 데 필요한 최소 이동 횟수를 정수 하나로 출력한다.

제한

  • 2≤N≤132 \le N \le 13;
  • 모든 테스트에는 흰색 폰이 적어도 하나, 검은색 폰이 적어도 하나 있다.

힌트

예제 입력의 판 2 0 0 2 1에 대해, 처음 배치와 55번의 이동을 각각 마친 뒤의 배치를 아래 그림으로 나타냈다.

예제1

  1. 예제 1

    입력
    5
    2 0 0 2 1
    
    예상 출력
    5