선택 정렬의 이동 거리
면접 대비시간 제한5초메모리 제한1024 MB
순열에 선택 정렬을 적용했을 때 각 값이 swap으로 이동한 거리의 합을 구합니다.
문제
1부터 까지의 정수가 한 번씩 등장하는 수열 가 주어진다. 이 수열에 선택 정렬 알고리즘을 적용했을 때 각 수의 이동 거리를 구하라.
선택 정렬 알고리즘이 익숙하지 않다면 아래 설명을 읽어보자.
- 길이가 인 수열 을 오름차순으로 정렬하는 선택 정렬은 아래 동작을 번 반복한다.
- 번째 동작에서는 중 최솟값 를 찾는다.
- 와 의 위치를 교환한다. 이때 와 의 이동 거리가 각각 만큼 증가한다.
예를 들어 가 주어졌다고 하자. 처음에는 모든 수의 이동 거리가 0이다. 알고리즘은 다음과 같이 진행된다.
- 을 자기 자신과 교환하면 가 된다. 1의 이동 거리는 0만큼 증가한다.
- 과 를 교환하면 가 된다. 2와 3의 이동 거리는 각각 2만큼 증가한다.
- 와 을 교환하면 가 된다. 3과 5의 이동 거리는 각각 1만큼 증가한다.
- 와 를 교환하면 가 된다. 4와 5의 이동 거리는 각각 1만큼 증가한다.
따라서 1은 0, 2는 2, 3은 3, 4는 1, 5는 2만큼 이동한다.
입력
첫째 줄에 수열의 길이 이 주어진다.
둘째 줄에 수열의 원소 이 차례대로 공백으로 구분되어 주어진다.
출력
첫째 줄에 개의 정수를 공백으로 구분하여 출력한다. 번째 정수는 의 이동 거리를 의미한다.
제한
- 에는 부터 까지의 정수가 정확히 한 번씩 등장한다.