[LeetCode] Relative Sort Array

준규·2022년 10월 11일
0

정수 배열 arr1 , arr2 가 주어질 때 arr2 는 중복이 없고 arr1 에 포함되어있는 숫자로 이루어진 배열이라고 한다.

이런 상황에서 arr1의 숫자들의 순서를 arr2 배열의 순서로 정렬하고 arr2에 존재 하지 않는 숫자는 바로 뒤에 오름차순으로 정렬해야한다. 중복되는 숫자는 연이어서 배치해주면 된다.

Example 을 보자

1번 예시와 같이 중복되는 숫자는 연이어서 배치해주면 된다

const relativeSortArray = function (arr1, arr2) {
  let result = [];

  for (let i = 0; i < arr2.length; i++) {
    result = result.concat(arr1.filter((num) => num === arr2[i]));

    arr1 = arr1.filter((num) => num !== arr2[i]);
  }

  return result.concat(arr1.sort((a, b) => a - b));
};

먼저 result 배열을 선언해주고 arr2의 길이 만큼 반복문을 돌아주었다

concat 함수와 filter를 이용하여 먼저 arr1 과 arr2 에 모두 존재하는 숫자 들을 result에 넣어주고 arr1에만 존재하는 숫자들을 다시 arr1에 할당을 해주었다

마지막으로 오름차순으로 정렬을 하여 result 배열을 만들어서 리턴해주었다

submit을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글