U E D R , A S I H C RSS

2ndPCinCAUCSE/ProblemC

No older revisions available

No older revisions available



C 번 문제 : 줄 세우기. 소스파일 이름 : ccc.c or ccc.cpp

유치원에 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기 위해 목적지까지 번호순서대로 일렬로 서서 걸어가도록 하였다. 이동 도중에 보니 아이들의 번호순서가 바뀌었다. 그래서 선생님은 다시 번호 순서대로 줄을 세우기 위해서 아이들의 위치를 옮기려고 한다. 그리고 아이들이 혼란스러워하지 않도록 하기 위해 위치를 옮기는 아이들의 수를 최소로 하려고 한다.
예를 들어, 7명의 아이들이 다음과 같이 순서대로 줄을 서 있다고 하자.

3 7 5 2 6 1 4

아이들을 순서대로 줄을 세우기 위해, 먼저 4번 아이를 7번 아이의 뒤로 옮겨보자. 그러면 다음과 같은 순서가 된다.

3 7 4 5 2 6 1

이제, 7번 아이를 맨 뒤로 옮긴다.

3 4 5 2 6 1 7

다음, 1번 아이를 맨 앞으로 옮긴다.

1 3 4 5 2 6 7

마지막으로 2번 아이를 1번 아이의 뒤로 옮기면 번호 순서대로 배치된다.

1 2 3 4 5 6 7

위의 방법으로는 모두 네 명의 아이를 옮겨 번호 순서대로 줄을 세운다. 위의 예에서 세명의 아이만을 옮겨서는 순서대로 배치할 수 가 없다. 따라서 네 명을 옮기는 것이 가장 적은 수의 아이를 옮기는 것이다.
N명의 아이들이 임의의 순서로 줄을 서 있을 때, 번호 순서대로 배치하기 위해 옮겨지는 아이의 최소 수를 구하는 프로그램을 작성하시오.

입력


입력은 표준 입력이다. 입력의 첫줄에 테스트 케이스의 개수를 나타내는 정수 T(10 이하)가 주어진다. 다음 줄 부터 T개의 테스트 케이스가 주어진다. 테스트케이스의 첫째 줄에는 아이들의 수 N이 주어진다. 둘째 줄에는 N명의 아이들의 순서를 나타내는, 1부터 N 사이의 정수로 이뤄진 순열이 주어진다. 순열에서 정수 사이에는 빈칸이 하나 들어 있다. N은 2이상 200이하의 정수이다.

출력


출력은 표준 출력이다. 출력은 T줄로 이뤄진다. 각 테스트 케이스에 대해서 번호 순서대로 줄을 세우는데 옮겨지는 아이들의 최소 수를 출력한다. T개의 테스트 케이스를 모두 맞혀야 이 문제를 맞힌 것이다.

입력의 예

~cpp 
3
7
3 7 5 2 6 1 4
6
6 5 4 3 2 1
15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

입력의 예에 대한 출력

~cpp 
4
5
0
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:14
Processing time 0.0225 sec