선택 정렬의 이동 거리
면접 대비시간 제한5초메모리 제한1024 MB
순열에 선택 정렬을 적용할 때 각 값이 이동한 거리의 합을 구해 출력한다.
문제
부터 까지의 정수가 한 번씩 등장하는 수열 가 주어진다. 이 수열에서 선택 정렬 알고리즘을 수행할 때, 각 수의 이동 거리를 출력하라.
선택 정렬 알고리즘이 무엇인지 잘 모르는 친구들은 친절한 주원이가 준비한 아래 설명을 읽어보도록 하자.
-
길이가 인 수열 A=\left\\{ A\_1,A\_2,\cdots ,A\_N \right\\}을 오름차순으로 정렬하는 선택 정렬 알고리즘은 아래 동작을 번 반복해서 수행한다.
- 지금이 번째 동작이라면, 중 최솟값 를 찾는다.
- 와 의 위치를 교환한다. 이때 와 의 이동 거리가 각각 만큼 증가한다.
예를 들어 \left\\{ 1,3,5,2,4 \right\\}와 같은 수열이 주어졌다고 하자. 처음에 모든 수의 이동 거리는 으로 같다. 선택 정렬 알고리즘은 다음과 같은 과정을 거쳐 수행된다.
- 과 을 교환해서 \left\\{ 1,3,5,2,4 \right\\}가 된다. 이때 의 이동 거리는 만큼 증가한다.
- 과 를 교환해서 \left\\{ 1,2,5,3,4 \right\\}가 된다. 이때 와 의 이동 거리는 만큼 증가한다.
- 와 을 교환해서 \left\\{ 1,2,3,5,4 \right\\}가 된다. 이때 과 의 이동 거리는 만큼 증가한다.
- 와 를 교환해서 \left\\{ 1,2,3,4,5 \right\\}가 된다. 이때 와 의 이동 거리는 만큼 증가한다.
따라서 은 만큼, 는 만큼, 은 만큼, 는 만큼, 는 만큼 이동한다.
입력
첫째 줄에 수열의 길이 이 주어진다.
둘째 줄에 수열의 원소 이 차례대로 공백으로 구분되어 주어진다.
출력
첫째 줄에 개의 정수를 공백으로 구분하여 출력한다. 번째 정수는 의 이동 거리를 의미한다.
제한
- 에는 부터 까지의 정수가 정확히 한 번씩 등장한다.