삭삽 정렬

시간 제한2초메모리 제한512 MB

요약
한 번의 연산으로 원소 하나를 배열 끝으로 옮긴다. 배열을 정렬하는 데 필요한 최소 연산 횟수를 구한다.
난이도

보통10점 중 4점

유형
그리디, 정렬
정답자
아직 제출이 없습니다

문제

선종이는 배열을 정렬하는 새로운 알고리즘을 강의에서 배웠다. 이 알고리즘은 배열의 원소를 삭제했다가 다시 삽입하는 과정을 반복해서 배열을 정렬한다. 선종이는 이 방법에 삭삽 정렬이라는 이름을 붙였다.

삭삽 과정 한 번은 다음 세 단계로 이루어진다.

  1. 배열의 원소 하나를 고른다.
  2. 고른 원소를 배열에서 삭제한다.
  3. 삭제한 원소를 배열의 맨 뒤에 삽입한다.

배열이 오름차순으로 정렬될 때까지 이 과정을 반복한다. 같은 값이 여러 번 나올 수 있으므로, 앞의 값이 뒤의 값보다 크지 않으면 정렬된 것으로 본다. 각 배열마다 필요한 삭삽 과정의 최소 횟수를 구하라.

입력

첫 줄에 테스트 케이스의 수 PP (1≤P≤1001 \le P \le 100)가 주어진다. 이어서 PP개의 데이터 세트가 주어지고, 각 데이터 세트는 서로 독립적으로 처리한다.

각 데이터 세트의 첫 줄에는 데이터 세트 번호 KK와 배열의 길이 NN (1≤N≤10001 \le N \le 1000)이 공백을 사이에 두고 주어진다.

그 다음 줄부터 배열을 이루는 NN개의 양의 정수가 주어진다. 마지막 줄을 제외한 모든 줄에는 정수가 10개씩 주어지고, 마지막 줄에는 10개보다 적게 주어진다. 각 정수는 10910^9보다 작다. 같은 값이 여러 번 주어질 수 있다.

출력

각 데이터 세트마다 데이터 세트 번호 KK와 삭삽 과정의 최소 횟수를 공백을 사이에 두고 한 줄에 출력한다.

힌트

길이가 3인 배열 1 3 2를 생각해 보자. 3을 삭제해서 맨 뒤에 삽입하면 배열이 1 2 3이 되어 정렬이 끝난다. 삭삽 과정을 한 번만 수행했으므로 이 배열의 답은 1이다.

예제3

  1. 예제 1

    입력
    3
    1 3
    1 3 2
    2 6
    1 5 2 4 3 6
    3 23
    67890 56312 999999999 12345 23456 38927 45632 100345 98765 23456
    87654 43278 23456 117654 321899 25432 54326 217435 26845 31782
    33456 41234 56213
    
    예상 출력
    1 1
    2 3
    3 15
    
  2. 예제 2

    입력
    3
    1 3
    2 1 2
    2 4
    3 1 2 1
    3 4
    1 2 1 2
    
    예상 출력
    1 1
    2 2
    3 1
    
  3. 예제 3

    입력
    3
    11 15
    1 1 999999999 1 2 999999999 2 3 3 1
    1 4 4 4 2
    12 4
    10 20 30 5
    13 6
    1 3 2 4 3 5
    
    예상 출력
    11 9
    12 3
    13 3