삽입정렬 문제이나, 처음에 삽입정렬을 구현하지 않고 자바스크립 내장 함수들을 이용하여 알고리즘을 풀었다. 답은 맞았으나 삽입정렬로 한번 더 구현해봤다.
삽입정렬 사용 안함 function moveToFront(arr, n) { let idx = arr.indexOf(n); for (let i = idx; i > 0; i--) { [arr[i - 1], arr[i]] = [arr[i], arr[i - 1]]; } } function solution(input, m) { let s = m[0]; let n = m[1]; let arr = []; for (let i = 0; i < s; i++) { for (let j = 0; j < n; j++) { if (arr.length < s && arr.indexOf(input[j]) != -1) { moveToFront(arr, input[j]); } else if (arr.length < s && arr.indexOf(input[j]) == -1) { arr.unshift(input[j]); } else if (arr.length == s && arr.indexOf(input[j]) != -1) { moveToFront(arr, input[j]); } else if (arr.length == s && arr.indexOf(input[j]) == -1) { arr.unshift(arr, input[j]); arr.pop(); } } } return arr; } let input = [1, 2, 3, 2, 6, 2, 3, 5, 7]; let n = [5, 9]; console.log(solution(input, n));
삽입정렬 사용
function solution(size, arr){ let answer=Array.from({length:size}, ()=>0); arr.forEach(x => { let pos=-1; for(let i=0; i<size; i++) if(x===answer[i]) pos=i; if(pos===-1){ for(let i=size-1; i>=1; i--){ answer[i]=answer[i-1]; } } else{ for(let i=pos; i>=1; i--){ answer[i]=answer[i-1]; } } answer[0]=x; }); return answer; } let arr=[1, 2, 3, 2, 6, 2, 3, 5, 7]; console.log(solution(5, arr));