삭삽 정렬
시간 제한2초메모리 제한512 MB
한 번의 연산으로 원소 하나를 배열 끝으로 옮긴다. 배열을 정렬하는 데 필요한 최소 연산 횟수를 구한다.
문제
선종이는 배열을 정렬하는 새로운 알고리즘을 강의에서 배웠다. 이 알고리즘은 배열의 원소를 삭제했다가 다시 삽입하는 과정을 반복해서 배열을 정렬한다. 선종이는 이 방법에 삭삽 정렬이라는 이름을 붙였다.
삭삽 과정 한 번은 다음 세 단계로 이루어진다.
- 배열의 원소 하나를 고른다.
- 고른 원소를 배열에서 삭제한다.
- 삭제한 원소를 배열의 맨 뒤에 삽입한다.
배열이 오름차순으로 정렬될 때까지 이 과정을 반복한다. 같은 값이 여러 번 나올 수 있으므로, 앞의 값이 뒤의 값보다 크지 않으면 정렬된 것으로 본다. 각 배열마다 필요한 삭삽 과정의 최소 횟수를 구하라.
입력
첫 줄에 테스트 케이스의 수 ()가 주어진다. 이어서 개의 데이터 세트가 주어지고, 각 데이터 세트는 서로 독립적으로 처리한다.
각 데이터 세트의 첫 줄에는 데이터 세트 번호 와 배열의 길이 ()이 공백을 사이에 두고 주어진다.
그 다음 줄부터 배열을 이루는 개의 양의 정수가 주어진다. 마지막 줄을 제외한 모든 줄에는 정수가 10개씩 주어지고, 마지막 줄에는 10개보다 적게 주어진다. 각 정수는 보다 작다. 같은 값이 여러 번 주어질 수 있다.
출력
각 데이터 세트마다 데이터 세트 번호 와 삭삽 과정의 최소 횟수를 공백을 사이에 두고 한 줄에 출력한다.
힌트
길이가 3인 배열 1 3 2를 생각해 보자. 3을 삭제해서 맨 뒤에 삽입하면 배열이 1 2 3이 되어 정렬이 끝난다. 삭삽 과정을 한 번만 수행했으므로 이 배열의 답은 1이다.