728x90
/*
당신에게 무작위 숫자가 이어져있는 중복이 없는 배열(1,2,3...n) 이 주어지며
당신은 2개의 원소를 스왑할 수 있다.
당신은 최소로 스왑하며 배열을 오름차순으로 정렬해야한다.
0부터 돌면서 현재 위치의 값이 최소값인지 아닌지 확인
최소값이면 푸시
아니면 최소값 위치 찾아서 현재랑 스왑 후 푸시, 카운트
... 이용
indexOf로 인해 속도가 느린듯함
최소값을 min함수로 찾음, indexOf로 min함수 위치 찾음
-> 개손해
--> 인줄 알았는데 min 함수 자체가 느려빠져서 해결이 안되었다.
---> 내가 영문 해석을 제대로 못했다. 배열은 무조건 1~n까지 랜덤으로 섞여있기 때문에 min을 쓸 필요가 없다.
*/
var arr = [7, 1, 3, 2, 4, 5, 6]
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
'알고리즘' 카테고리의 다른 글
Sherlock and Anagrams javascript로 풀기 (0) | 2020.07.22 |
---|---|
Array Manipulation Javascript로 풀기 + 해설 (0) | 2020.07.17 |
New Year Chaos Javascript로 풀기 (0) | 2020.07.09 |
Extra Long Factorials javascript 번역 및 풀이 (0) | 2019.11.04 |
Climbing the Leaderboard javascript 번역 및 풀이 (0) | 2019.10.14 |