졸린 소 정렬
면접 대비시간 제한2초메모리 제한512 MB
1부터 N까지의 순열이 주어질 때 맨 앞 소를 임의 칸수만큼 뒤로 보내는 연산을 반복해서 정렬된 순서에 도달하는 최소 걸음 수를 구한다.
문제
농부 존은 소들이 아침 식사를 위해 목초지로 나가기 전에, 마리()의 소를 정렬하려고 한다. 소에게는 편의상 의 번호가 붙어 있다.
현재 소들은 의 순서로 한 줄로 서 있고, 농부 존은 소 앞에 서 있다. 그는 소들을 순서로, 즉 소 이 농부 존 옆에 오도록 다시 세우려고 한다.
오늘 소들은 조금 졸려서, 어느 시점이든 농부 존의 지시에 귀 기울이는 소는 농부 존과 마주 보고 있는 소 한 마리뿐이다. 한 시간 단계에서 그는 이 소에게 줄에서 칸 뒤로 이동하라고 지시할 수 있으며, 는 범위의 임의의 값이다. 소가 지나치는 마리의 소는 앞으로 비켜서서, 소가 그 뒤에 끼어들 자리를 만들어 준다.
예를 들어 이고 소들이 처음에 다음과 같은 순서로 서 있다고 하자.
FJ: 4, 3, 2, 1
농부 존의 지시에 귀 기울이는 소는 소 뿐이다. 그가 소 에게 줄에서 칸 뒤로 이동하라고 지시하면, 순서는 다음과 같이 바뀐다.
FJ: 3, 2, 4, 1
이제 농부 존의 지시에 귀 기울이는 소는 소 이므로, 두 번째 시간 단계에서 소 에게 지시를 내릴 수 있고, 소들이 정렬될 때까지 이런 식으로 계속할 수 있다.
농부 존은 정렬을 빨리 끝내고 자신의 아침 식사를 하러 농가로 돌아가고 싶어 한다. 소들을 정렬하는 데 필요한 최소 시간 단계 수를 구하도록 돕자.
입력
첫 번째 줄에 이 주어진다.
두 번째 줄에 소들의 처음 순서를 나타내는 개의 정수 이 공백으로 구분되어 주어진다.
출력
농부 존이 최적으로 행동할 때, 마리의 소가 정렬되기까지 걸리는 시간 단계 수를 나타내는 정수 하나를 출력한다.