본문 바로가기

알고리즘

Minimum Swaps 2 자바스크립트로 풀기

728x90

/*

당신에게 무작위 숫자가 이어져있는 중복이 없는 배열(1,2,3...n) 이 주어지며 

당신은 2개의 원소를 스왑할 수 있다.

당신은 최소로 스왑하며 배열을 오름차순으로 정렬해야한다.



0부터 돌면서 현재 위치의 값이 최소값인지 아닌지 확인

최소값이면 푸시

아니면 최소값 위치 찾아서 현재랑 스왑 후 푸시, 카운트

... 이용

indexOf로 인해 속도가 느린듯함

 

최소값을 min함수로 찾음, indexOf로 min함수 위치 찾음

-> 개손해

--> 인줄 알았는데 min 함수 자체가 느려빠져서 해결이 안되었다.

---> 내가 영문 해석을 제대로 못했다. 배열은 무조건 1~n까지 랜덤으로 섞여있기 때문에 min을 쓸 필요가 없다.

 

*/

var arr = [7132456]

 

function minimumSwaps(arr){

    var MaxValue = Number.MAX_SAFE_INTEGER;

    var cnt = 0;

 

    for(var i=0;i<arr.length;i++){

        if(arr[i]!=i+1){

            swap(arr,i,arr.indexOf(i+1,i)) 

            cnt++;

        }

    }

    

    return cnt;

}

function swap(arr,x,y){

    var tmp;

    tmp = arr[x];

    arr[x] = arr[y];

    arr[y] = tmp;

}

minimumSwaps(arr);

 

728x90