자바스크립트 코딩테스트 '장난꾸러기 현수'
오름차순 정렬되어있는 배열에서 임의로 바꾼 2개의 배열 인덱스값을 찾는 문제.
- 내 풀이 :
버블정렬을 응용하여 뒤에서부터 배열탐색.
(입력예제 (2)때문에 (같은 값 존재) 뒤에서부터 탐색했다.)
if값에 해당하는 인덱스값을 변수 idx에 저장해놓고, swap값을 증가시킴.
idx값과 idx-swap값을 answer에 push한다.
function solution(arr){
let answer=[];
let swap=idx=0;
for (let i=arr.length-1; i>=0; i--) {
if (arr[i-1] > arr[i]) {
idx=i;
[arr[i-1], arr[i]] = [arr[i], arr[i-1]];
swap++;
}
}
answer.push(idx);
answer.push(idx+swap);
return answer;
}
let arr=[120, 125, 152, 130, 135, 135, 143, 127, 160];
console.log(solution(arr));
- 쌤 풀이 :
arr를 sort로 정렬한 다음, for문을 돌려서 기존 arr와 비교하여 다른 값의 인덱스를 answer에 push한다.
function solution(arr){
let answer=[];
let sortArr=arr.slice();
sortArr.sort((a, b)=>a-b);
for (let i=0; i<arr.length; i++) {
if (arr[i]!==sortArr[i]) answer.push(i+1);
}
return answer;
}
let arr=[120, 125, 152, 130, 135, 135, 143, 127, 160];
console.log(solution(arr));
Author And Source
이 문제에 관하여(자바스크립트 코딩테스트 '장난꾸러기 현수'), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@saiani1/자바스크립트-코딩테스트-장난꾸러기-현수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)