ALGORITHM/Inflearn

장난꾸러기 현수

Harimad 2022. 3. 16. 14:53

문제

2명 빼고 오름차순으로 번호가 적혀있다.
오름차순이 아닌 번호의 자리번호를 출력하시오.

입력예제 1
120 125 152 130 135 135 143 127 160
 
출력예제 1 
3 8


입력예제 2 
120 130 150 150 130 150
 
출력예제 2 
3 5

 

풀이

1. 함수에 입력된 배열인자를 새 변수에 깊은 복사를한다.

2. 그리고 오름차순으로 정렬한다.

 

3. 함수에 입력된 배열인자와 새로 정렬된 배열을 비교한다.

4. 두 배열이 다른 요소를 가진 index+1을 answer배열 변수에 push한다.

 

코드

<script>
function solution(arr){
  let answer=[];
  let sortedArr = [...arr].sort((a, b) => a - b); //arr.slice()로 깊은복사 가능  // 1, 2

  arr.forEach((val, idx) => { // 3
    if (val !== sortedArr[idx]) answer.push(idx+1); // 4
  })
    
  return answer;
}

let arr=[120, 125, 152, 130, 135, 135, 143, 127, 160];
console.log(solution(arr)); // [3, 8]

let arr2 = [120, 130, 150, 150, 130, 150];
console.log(solution(arr2)); // [3, 5]
</script>

 

출처

 

자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의

자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., - 강의

www.inflearn.com