1부터 N까지의 정수가 한 번씩 등장하는 수열 A가 주어진다. 이 수열에서 선택 정렬 알고리즘을 수행할 때, 각 수의 이동 거리를 출력하라.
선택 정렬 알고리즘이 무엇인지 잘 모르는 친구들은 친절한 주원이가 준비한 아래 설명을 읽어보도록 하자.
-
길이가 N인 수열 A=\left\\{ A\_1,A\_2,\cdots ,A\_N \right\\}을 오름차순으로 정렬하는 선택 정렬 알고리즘은 아래 동작을 N−1번 반복해서 수행한다.
- 지금이 i번째 동작이라면, A_i,A_i+1,⋯,A_N 중 최솟값 A_j를 찾는다.
- A_i와 A_j의 위치를 교환한다. 이때 A_i와 A_j의 이동 거리가 각각 (j−i)만큼 증가한다.
예를 들어 \left\\{ 1,3,5,2,4 \right\\}와 같은 수열이 주어졌다고 하자. 처음에 모든 수의 이동 거리는 0으로 같다. 선택 정렬 알고리즘은 다음과 같은 과정을 거쳐 수행된다.
- A_1=1과 A_1=1을 교환해서 \left\\{ 1,3,5,2,4 \right\\}가 된다. 이때 1의 이동 거리는 0만큼 증가한다.
- A_2=3과 A_4=2를 교환해서 \left\\{ 1,2,5,3,4 \right\\}가 된다. 이때 2와 3의 이동 거리는 2만큼 증가한다.
- A_3=5와 A_4=3을 교환해서 \left\\{ 1,2,3,5,4 \right\\}가 된다. 이때 3과 5의 이동 거리는 1만큼 증가한다.
- A_4=5와 A_5=4를 교환해서 \left\\{ 1,2,3,4,5 \right\\}가 된다. 이때 4와 5의 이동 거리는 1만큼 증가한다.
따라서 1은 0만큼, 2는 2만큼, 3은 3만큼, 4는 1만큼, 5는 2만큼 이동한다.